使用 Compat.jl
該 Compat.jl 包能夠使用一些新的朱莉婭功能和語法與舊版本朱莉婭。其功能記錄在自述檔案中,但下面給出了有用應用程式的摘要。
Version < 0.5.0
統一字串型別
在 Julia v0.4 中,有許多不同型別的字串 。這個系統被認為過於複雜和混亂,所以在 Julia v0.5 中,仍然只有 String
型別。Compat
允許在版本 0.4 上使用 String
型別和建構函式,名稱為 Compat.String
。例如,這個 v0.5 程式碼
buf = IOBuffer()
println(buf, "Hello World!")
String(buf) # "Hello World!\n"
可以直接翻譯為此程式碼,該程式碼適用於 v0.5 和 v0.4:
using Compat
buf = IOBuffer()
println(buf, "Hello World!")
Compat.String(buf) # "Hello World!\n"
請注意,有一些警告。
- 在 v0.4 中,
Compat.String
的型別為ByteString
,即Union{ASCIIString, UTF8String}
。因此,具有String
欄位的型別將不是型別穩定的。在這些情況下,建議使用Compat.UTF8String
,因為它意味著 v0.5 上的String
和 v0.4 上的UTF8String
,兩者都是具體型別。 - 人們必須小心使用
Compat.String
或import Compat: String
,因為String
本身對 v0.4 有意義:它是AbstractString
的一個棄用別名。意外使用String
代替Compat.String
的標誌是,如果在任何時候出現以下警告:
WARNING: Base.String is deprecated, use AbstractString instead.
likely near no file:0
WARNING: Base.String is deprecated, use AbstractString instead.
likely near no file:0
緊湊的廣播語法
朱莉婭 v0.5 為 broadcast
介紹了語法糖。語法
f.(x, y)
被降到了天 .19。使用此語法的示例包括 sin.([1, 2, 3])
一次獲取多個數字的正弦值。
在 v0.5 上,語法可以直接使用:
julia> sin.([1.0, 2.0, 3.0])
3-element Array{Float64,1}:
0.841471
0.909297
0.14112
但是,如果我們在 v0.4 上嘗試相同的操作,則會出現錯誤:
julia> sin.([1.0, 2.0, 3.0])
ERROR: TypeError: getfield: expected Symbol, got Array{Float64,1}
幸運的是,Compat
也可以從 v0.4 開始使用這種新語法。我們再次新增 using Compat
。這一次,我們用 @compat
巨集包圍表示式:
julia> using Compat
julia> @compat sin.([1.0, 2.0, 3.0])
3-element Array{Float64,1}:
0.841471
0.909297
0.14112