複数のScala中置メソッド呼び出しをチェーンできないのはなぜですか
-
29-10-2019 - |
質問
DSLに取り組んでいますが、チェーン内でメソッドを中置演算子として使用する際に問題が発生しました。いくつかのコードで説明しようと思います。私は特性Term
とそれを拡張するケースクラスLiteral
とVariable
を持っています。いくつかの演算子を使用して用語インスタンスのリストを作成したい。
ジェネラコディセタグプレ
これはfoo.bar("x").-->(all)
と同等であると思いますが、通訳者はそれをfoo.bar("x".-->(all))
と見なしているようです。
解決
ここで演算子の優先順位を見つけることができます:
最初の回答によると、-
は文字よりも優先度が高くなっています。したがって、コンパイラは次のように式をグループ化します。
ジェネラコディセタグプレ
-->
を優先度の低いもの(文字など)に置き換える場合は、コンパイルする必要があります。例:
ジェネラコディセタグプレ
bar
の代わりに優先度の高い演算子を選択することもできます。~~>
は特殊文字であり、優先度が最も高いため、~
のようなもので実行できます。
ジェネラコディセタグプレ
所属していません StackOverflow