多くの新機能,変更がある。
https://docs.julialang.org/en/v1/NEWS/
そのうちで,私が気になったものを以下に抜萃した。
√,∛ の前の乗算記号は不要になった
julia> x, y = 2, 3
(2, 3)
julia> x√y
3.4641016151377544
julia> x * sqrt(y)
3.4641016151377544
julia> x∛y
2.8844991406148166
julia> x * y^(1/3)
2.8844991406148166
julia> x * cbrt(y)
2.8844991406148166
julia> 3√3
5.196152422706632
julia> 3 * sqrt(3)
5.196152422706632
#####
配列の連結を指定するセミコロンの個数でどのように連結するかを指定できるようになった
julia> A = [1 2; 3 4]
2×2 Matrix{Int64}:
1 2
3 4
julia> B = [11 12; 13 14]
2×2 Matrix{Int64}:
11 12
13 14
julia> [A; B] # 1 個の場合は 1 次元方向へ
4×2 Matrix{Int64}:
1 2
3 4
11 12
13 14
julia> [A;; B] # 2 個の場合は 2 次元方向へ
2×4 Matrix{Int64}:
1 2 11 12
3 4 13 14
julia> [A;;; B] # 3 個の場合は 3 次元方向へ。以下同様に...
2×2×2 Array{Int64, 3}:
[:, :, 1] =
1 2
3 4
[:, :, 2] =
11 12
13 14
#####
文字列の途中でバックスラッシュ \ の後に改行し,次行以降に文字列を続ける場合,\ も改行コードも除去されて一連の文字列になる。次行以降の文字列にインデンテーションがある場合には画面上はインデンテーションされるが,文字列の中には空白もタブも含まれない。
julia> s = "abcdefg\
hijklmn"
"abcdefghijklmn"
julia> s = "abcdefg\
hijklmn"
"abcdefghijklmn"
#####
range() の引数指定法が改善された。
range(start, stop, length)
range(start, stop; length, step)
range(start; length, stop, step)
range(;start, length, stop, step)
#####
replace() で複数の置換ができるようになった。置換は左から右へ同時に行われる。
julia> replace("abcabc", "a" => "b", "b" => "c", r".+" => "a")
"bca"
julia> replace("abcabc", "a" => "b")
"bbcbbc"
julia> replace("abcabc", "a" => "b", "b" => "c")
"bccbcc"
#####
乱数発生器が Mersenne Twister から Xoshiro256++ になった。
このため,Ramdom.seed!() で乱数の種が設定されていても,Mersenne Twister のときと同じ乱数列は生成されないので注意が必要。