Изменения в версии 0.6
Уже давно висит Julia v0.6.0 Release Notes по адресу https://github.com/JuliaLang/julia/blob/master/NEWS.md
Теперь, когда выложена пре-альфа версия, можно вкратце перечислить, что будет в 0.6.
Здесь я напишу, только самые интересные из тех изменений, которые смог понять без детального ознакомления с кодом.
- В объявлениях типов можно ссылаться на ранее упомянутый типовой параметр:
type Foo{R<:Real, A<:AbstractArray{R}}
- Наконец, можно будет сказать так:
Array{T} where T<:Intege
Анонимные функции с использованием этого синтаксиса можно объявлять так ((x::Array{T}) where T<:Real) -> 2x
- Возможен неявный типовой параметр:
Vector{<:Real}
что значит:Vector{T} where T<:Real
Вместо
immutable
лучше писатьstruct
Вместо
type
- лучшеmutable struct
Вместо
abstract
-abstract type ... end
Вместо
bitstype 32 Char
-primitive type Char 32 end
immutable
и type
все еще разрешены (не deprecated )
typealias
- устарело, надо использовать const
или форму присвоения Vector{T} = Array{T,1}
readline
,readlines
,eachline
- автоматически делаютchomp()
Если требуется старое поведение, то нужно писать readline(s, chomp=false)
String
больше не имеет поля.data
- Появился тип
UnionAll
, который неявно используется, например, когда указывается неопределенныйArray
, как типовой параметр chop
иchomp
теперь возвращаютSubString
- Когда после ошибки в REPL печатается нумерованный стектрейс, то открытие соответствующего исходника возможно набором указанного номера и нажатия
^Q
- При вставке текста, если некоторые строки начинаются с
julia>
, то только такие строки будут парситься. Остальные будут отброшены. - Функция
print_with_color
принимает еще и числовой параметр0 - 255
Появилась интересная функция "функциональная композиция". Именем ее является \\circ<tab>
.
Появилась функция "композиция с отрицанием" - передал смысл своими словами. Когда !
применено к имени функции, результат - функция возвращающая логическое "нет" от результата исходной функции.
И есть еще много другого.