Julia v1.4 釋出
Julia v1.4 已經釋出啦!這邊來跟大家介紹一些新功能。
底下新功能後面會有括弧,附註相關的實作程式碼。
重要功能
使用者功能
import
允許符號,例如import Base.:+
。(#33158)- 允許使用
a[begin]
來存取a
的首位元素。首位元素的索引是由firstindex(a)
計算得出。(#33946)
1 | julia> x = [1,2,3] |
- 值可以藉由
$
內插到@async
及@spawn
中,它會將值直接複製一份到閉包(closure)中。(#33119)
開發者功能
- 結構
struct
當中,所有位元(isbits)或是位元聯集(isbitsunion)的欄位(fields)都會儲存為陣列的元素。(#32448)
以前在 Julia 的結構當中,只有所有欄位都有相同的型別,而且型別都是原始型別時,Julia 底層會將他們封裝到一個陣列中,如此可以加速。在 v1.4 版後放寬了這樣的限制,讓有所有位元欄位都儲存為陣列。
新功能
- Iterators 模組中有
accumulate
實作。(#34033)
Jeff 頗驚訝,之前怎麼沒有這個功能XD
1 | julia> x = [1,2,3] |
功能與 Base.accumulate
雷同,但是屬於 lazy evaluation。
evalpoly
可以用來計算多項式函數,例如evalpoly(x, (p1, p2, p3))
。(#32753)
1 | julia> evalpoly(5, (10, 3, 1)) |
相當於計算 $p(5) = 10 + 3\times5 + 1\times5^2$。
- 允許複合函數(function composition)
∘(f, g, h) = f ∘ g ∘ h
,以及解開∘(fs...)
,當中fs
可以是 Iterable 的函數集合。(#33568)
1 | julia> f(x) = x + 1 |
新支援
gcd
、lcm
及gcdx
支援Rational
型別的參數。(#33910)splitpath
支援任何AbstractString
型別,然而以前只支援String
的路徑。(#33012)filter
可以作用在Tuple
上。(#32968)