2016-10-28 20 views
0

のみ1パラメータを使用することができることは、yがベクトルであることができるはず以下ジュリア:ベクトル{S}、またはS

type mytype{S} 
    x::Vector{S} 
    y::Vector{S} OR y::S 
end 

値を実行するだけつのパラメータを使用することが可能ですタイプSまたはS型

のただ一つの要素私は本当に私が

y::Dict{Vector{S}, Vector{Int64}} 

とするとき、キーを長目にわずか1要素でを持っているので、これは必要な理由醜いです

y["key"] #want this 
y[["key"]] #must use this 
+0

@クリスRackauckasの答えが正しいか、私は信じているが、これはあなたが本当に問題によって意味したものは何かということですかしら。三角形のディスパッチでは、 'Dict {Vector {S}、Vector {Int}}' *または* 'Dict {S、Vector {Int}}'の 'y'を取得します。 'S'と' Vector {S} 'の両方をキーとする 'y'を得ることはできません。 – DNF

+1

'y'を' Vector {S} '型に厳密に保つことが考えられますが、getterとsetterを操作して' Vector {S} 'か 'S'をキーとして受け入れます。 – DNF

答えて

1

私はこれのために三角ディスパッチが必要だと思います。何が欲しいのは、これはv0.6に来る

type mytype{S,T<:Union{S,Vector{S}}} 
    x::Vector{S} 
    y::T 
end 

で見るhttps://github.com/JuliaLang/julia/pull/18457

+0

私はこれを投稿した後、ユニオンについて覚えていました。 Vector {S} <:Tなので、 x :: T、y :: T なので、Tパラメータだけを保持することができますか? – mv3

+0

さて、私はそれを試して、私のコメントは動作しません。私は一度Tが選択されて固定され、両方のために使用することはできないと思います。 – mv3

+0

はい、あなたが探しているのは三角形のディスパッチです。 –

関連する問題