2016-10-28 4 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}} 

을 가지고 있기 때문입니다 원하는 이유 키는 길이 일 단지 한 요소 일 때 못생긴다

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

나는 이것을 위해 삼각 파견이 필요하다고 생각한다. 당신이 원하는 것은

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

이것은, v0.6에 와서 내가 생각 https://github.com/JuliaLang/julia/pull/18457

+0

내가 게시 한 후 Union에 대해 방금 기억했습니다. Vector {S} <: T이므로 x :: T, y :: T 이므로 T 매개 변수 만 유지할 수 있습니까? – mv3

+0

글쎄, 나는 그것을 시도하고 내 의견을 작동하지 않습니다. T가 선택되면 고정되어 두 가지 모두에 사용할 수 없습니다. – mv3

+0

예, 찾고있는 것은 삼각형 파견입니다. –

관련 문제