3
Предположим, у меня есть типыКак определить параметрический тип по параметрическому типу?
immutable X{T}
a::T
end
immutable Y{T}
a::T
end
Я хотел бы сделать что-то вроде
type A{T, U}
x::U{T}
y::T
end
Так что случаи могут быть A(X(a), a)
или A(Y(a), a)
Это не работает, как LoadError: TypeError: Type{...} expression: expected Type{T}, got TypeVar
Каков правильный путь?
Но тогда A.x является абстрактным типом, а не конкретным типом. Разве это не повредило бы производительность? – colinfang
@colinfang Я думаю, вы действительно ищете что-то вроде этого типа A {T, U <: Union {X {T}, Y {T}}} ', но треугольная отправка до сих пор не поддерживается в julia. в настоящее время вы можете использовать 'type A {T, U <: Union {X, Y}}' + внутренний конструктор в качестве обходного пути. надеюсь, у нас будет треугольная отправка [в julia-0.6] (https://github.com/JuliaLang/julia/issues/6984#issuecomment-49751358). – Gnimuc
Я считаю, что мастер в настоящее время имеет треугольную отправку, поэтому он определенно должен быть в 0,6 –