Рассмотрим следующую структуру:
struct MyType1{T}
data::T
end
Ее можно создать двумя способами:
println(MyType1(5)) # MyType1{Int64}(5)
println(MyType1{Int}(5)) # MyType1{Int64}(5)
Когда я определяю нечто подобное с помощью внутреннего конструктора:
struct MyType2{T}
data::T
MyType2(x::T) where T = new{T}(x)
end
struct MyType3{T}
data::T
MyType3{T}(x::T) where T = new{T}(x)
end
Я могу создать их экземпляры только одним способом:
println(MyType2(5)) # MyType2{Int64}(5)
println(MyType2{Int}(5)) # MethodError
println(MyType3(5)) # MethodError
println(MyType3{Int}(5)) # MyType3{Int64}(5)
Как сделать спецификацию типа во внутреннем конструкторе необязательной (сделайте MyType2
и MyType3
, чтобы не выбрасывать MethodError
в приведенном выше примере) ?
версия julia 1.4.1