Предположим, что я хочу хранить вектор I вместе со своей нормой. Я ожидал, что соответствующее определение типа, чтобы быть простым:Функция типа параметра в определении типа
immutable VectorWithNorm1{Vec <: AbstractVector}
vec::Vec
norm::eltype(Vec)
end
Однако, это не работает по назначению:
julia> fieldtype(VectorWithNorm1{Vector{Float64}},:norm)
Any
Кажется, что я должен сделать
immutable VectorWithNorm2{Vec <: AbstractVector, Eltype}
vec::Vec
norm::Eltype
end
и полагаться на пользователь не должен злоупотреблять параметром Eltype
. Это верно?
PS: Это всего лишь придуманный пример, иллюстрирующий проблему. Это не проблема, с которой я столкнулся.
Как насчет сохранения его как символа? –
Не могли бы вы уточнить? – gTcV
Дело в том, что вы можете выполнить проверку времени выполнения [возможность применения функции как нормы] (http://docs.julialang.org/en/latest/stdlib/base/#Base.applicable) в __constructor__, но вы не можете наложить это на тип –