2

新しい julia 0.5 では、配列のビューのサポートが改善されました。この機能を使用して、カスタム タイプのビューを許可することはできますか? たとえば、私ができるように

immutable test
    a::Vector{Int}
    b::Vector{Int}
end

次に、たとえば引数として 1:3 を渡したときにlikeのようなgetviewビューを提供する関数を定義しますか? (これを行うだけで、 a と b がサブ配列のコピーである新しいテストオブジェクトが作成されますが、これは私が望むものではありません)。ありがとう!testtest(view(a,1:3), view(b,1:3)

4

1 に答える 1

3

重要なのは、型に Array または SubArray を保持させたい場合は、それをパラメトリックにする必要があるということです。それ以外の場合は、新しいオブジェクトの構築時に変換 (コピー) されます。

julia> immutable MyType{T}
           a::T
           b::T
       end

julia> Base.view(mt::MyType, args...) = MyType(view(mt.a, args...), view(mt.b, args...))

julia> mt = MyType(rand(5),rand(5))
MyType{Array{Float64,1}}([0.791258,0.605581,0.126802,0.559727,0.156383],[0.773287,0.223521,0.926932,0.0301801,0.68872])

julia> view(mt, 2:3)
MyType{SubArray{Float64,1,Array{Float64,1},Tuple{UnitRange{Int64}},true}}([0.605581,0.126802],[0.223521,0.926932])
于 2016-10-12T18:38:18.523 に答える