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)