Julia 的0.4 版本(release)马上就要出来,但从0.4 candidate 版本可以看到,和先前版本相比,0.4+版本在一些地方明显的不同和变化。
最大的惊喜是,using库的速度比原先有非常大的进步,提升了一些客户体验。赞一下。
当然,升级也会带来一些不适,代价是需要对原先的代码进行一些调整。今天主要讲讲其中的调整。
1、库的变化
Color => Colors
Dates=>Base.Dates # Dates库内置成Base.
在这里,Date(2015,1,1) 和DateTime(2015,1,1,9,30) 可以直接使用,但是,year(), month(),day(), 必须是Dates.year(),Dates.month(),Dates.day().
或者先加上 using Base.Dates, 这样就可以直接使用year()等.
2、一些用法的变化
(1) 比如push!功能的变化。
(a)对于Dict(), 更多改为 由push! => setindex!
但更为重要的是: push!(data, key, value ) => setindex!(data,value,key). 因为这个变化,所以不能单纯用替换来进行升级。
需要说明的是,这个变化往往需要时间来适应。
(b) 对于Array ,建议由push! 进行操作,而不是setindex!().
比如,对于data =Float64[] # 或Array{Float64,1}()
setindex!(data,0.1) # 将会报错!
push!(data,0.1) # 正常
(2) 空格处理
原来比如 函数名后 有二个空格,再() 函数,即 fun (data::Array{Float64,1}), 在fun签名后有空格的,在0.4版本认为不妥。
(3)函数的变化:ifloor(), int() 等
ifloor(x) => floor( )
int(x) => round(Int,x)
parseint(Int64,x) => parse(Int64,x)
String => AbstractString
Base.Uint8 => Base.UInt8 等
(4) 语法的变化
(a) Dict
比如,Dict的写法进行了进一步的规范:
["a"=>0.1, "b"=>0.2] =>Dict("a"=>0.1,"b"=>0.2) # 已经要求要加Dict .
(b) [1:4] 已经改成 collect(1:4).
(5) Sys =>Base . 这个会影响到路径的设置,特别提醒!
push!(Sys.DL_LOAD_PATH, "/opt/local/lib") => :Base.DL_LOAD_PATH
3、其它
另外,还有一些是IDE平台LT和一些库未和跟随0.4升级的报错或warning.
不过,若是由于其它的库没有升级(比如函数、语法过期等),可以下Compat.jl库,using Compat; 后可以把WARNING不显示。
后面再一一总结吧。当然,如果有自动升级处理的方式或机制,会更好,毕竟,升级还是有一定工作量的。