2017-04-25 18 views
3

例えば誰かがJuliaの型フィールドに別名を付けることはできますか?

type Bar 
    v::String 
end 

によって型バーを定義する私はvが悪いフィールド名だと思うし、それを直接変更する必要はありません。 フィールドに、valueのようなエイリアス名を付けたいとします。

私はalias Bar.v, :valueような何かを行うことができることを望む、と

julia> bar = Bar("the value") 

julia> bar.value 
"the value" 

私はジュリアにそのようなことを行うことができましたか?

+2

好ましい方法は、フィールドに直接アクセスするのではなく、アクセサメソッド 'value(b :: Bar)= b.val'を定義することです。 fieldnameは、型の内部実装の一部として見ることができ、関心事ではありません。 – DNF

答えて

3

これは現在できません。

あなたがこれを行うことができると思う唯一の方法は、現在許可されていないa.bフィールドアクセス構文(getfield)をオーバーロードすることです。この問題については、https://github.com/JuliaLang/julia/issues/1974という長い議論がありますが、tldrはおそらく1.0より前に実装されています。

+0

この回答は正しい - これは現時点では不可能です。 – StefanKarpinski

+0

Juliaにこのような機能がある場合は、本当に調理する必要があります! – Yang

+0

実際、私はそれがクールかもしれない多くのユースケースがあると思いますが、@DNFがアクセスメソッドを定義すると指摘したように、トップレベルの使用にはしばしば望ましいです。 –

関連する問題