Объявление 1. Это может произойти, когда тип того, что вы передаете функции, изменился, а сигнатура функции носит ограничительный характер. Например, в Julia 0.6 у вас есть следующий тип возврата transpose
:
julia> transpose([1,2,3])
1×3 RowVector{Int64,Array{Int64,1}}:
1 2 3
а у Юлии 1,0
julia> transpose([1,2,3])
1×3 LinearAlgebra.Transpose{Int64,Array{Int64,1}}:
1 2 3
, а затем, если ваша функция ожидала RowVector
, она не будет выполнена.
Объявление 2. Вы можете сделать это так:
julia> f(x::Int) = y::Int -> y + x
f (generic function with 1 method)
julia> a = f(10)
#11 (generic function with 1 method)
julia> methods(a)
# 1 method for generic function "#11":
[1] (::getfield(Main, Symbol("##11#12")))(y::Int64) in Main at REPL[5]:1
Объявление 3. Рекомендуется использовать Julia 0.7 для переноса кода, потому что он печатает предупреждения о вещах, которые изменились между Julia 0.6 и Julia 1.0.