複数のScala中置メソッド呼び出しをチェーンできないのはなぜですか

StackOverflow https://stackoverflow.com/questions/5904038

  •  29-10-2019
  •  | 
  •  

質問

DSLに取り組んでいますが、チェーン内でメソッドを中置演算子として使用する際に問題が発生しました。いくつかのコードで説明しようと思います。私は特性Termとそれを拡張するケースクラスLiteralVariableを持っています。いくつかの演算子を使用して用語インスタンスのリストを作成したい。 ジェネラコディセタグプレ

これはfoo.bar("x").-->(all)と同等であると思いますが、通訳者はそれをfoo.bar("x".-->(all))と見なしているようです。

役に立ちましたか?

解決

ここで演算子の優先順位を見つけることができます:

Scalaでのオペレーターの優先順位

最初の回答によると、-は文字よりも優先度が高くなっています。したがって、コンパイラは次のように式をグループ化します。 ジェネラコディセタグプレ

-->を優先度の低いもの(文字など)に置き換える場合は、コンパイルする必要があります。例: ジェネラコディセタグプレ

barの代わりに優先度の高い演算子を選択することもできます。~~>は特殊文字であり、優先度が最も高いため、~のようなもので実行できます。 ジェネラコディセタグプレ

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top