0

私はScala で見つけました: getter なしで setter を書くことはできませんか? ゲッターなしではセッターを作成できないこと:

単純変数 x = e への割り当ての解釈は、x の定義によって異なります。x が変更可能な変数を表す場合、代入によって x の現在の値が式 e の評価結果に変更されます。e の型は x の型に適合することが期待されます。 x が何らかのテンプレートで定義されたパラメーターなしの関数であり、同じテンプレートにセッター関数 x_= がメンバーとして含まれている場合、代入 x = e はそのセッター関数の呼び出し x_=(e ) として解釈されます。 同様に、パラメーターなしの関数 x への代入 fx = e は、呼び出し f.x_=(e ) として解釈されます。'=' 演算子の左側に関数適用を伴う代入 f(args) = e は、 f.update(args, e ) として解釈されます。つまり、 f によって定義された更新関数の呼び出しです。

そのため、ゲッターなしでセッターを許可しないのは設計上の決定です。しかし、なぜ?実装するのが難しいだけですか、それとも基本的に不可能ですか?

このシンタックス シュガーを使用しないと、プロジェクトのどこでも同じ構文を持つことができなくなる (やや複雑な) セッターとして使用することで、有効な使用例があります。

4

1 に答える 1