50

私はScalaの演算子の優先順位の提案が好きですが、まれに、メソッドの命名に制限があるため、変更されていないルールが不便な場合があります。Scalaでクラス/ファイルなどに別のルールを定義する方法はありますか?そうでない場合、それは将来解決されますか?

4

4 に答える 4

104

演算子の優先順位は、Scalaリファレンスで修正されています-6.12.3演算子の最初の文字による中置演算。優先順位の昇順でリストされています:

(all letters)
|
^
&
= !
< >
:
+ -
* / %
(all other special characters)

そして、それが変わる可能性はあまりありません。おそらく、修正するよりも多くの問題が発生します。通常の演算子の優先順位を使用している場合、1つのクラスで優先順位を変更すると、かなり混乱します。

于 2010-05-27T15:26:35.850 に答える
8

Scalaでクラス/ファイルなどに別のルールを定義する方法はありますか?そうでない場合、それは将来解決されますか?

そのような能力はなく、近い将来に追加される可能性はほとんどありません。

于 2010-05-27T15:24:42.377 に答える
2

実験的な機能を「プレビュー」するバージョンのコンパイラであるscalaコンパイラのタイプレベルフォークで機能要求が発生しました。開発者は、誰かがこのためのSIPを作成する場合、実装を検討することを提案しました。

しかし、現在の状態では、優先順位を上書きする方法はありません。その規則は、言語仕様で正式に定義されています。

于 2017-09-23T07:52:03.027 に答える
0

メソッドの命名に制限があるため、変更されていないルールは不便な場合があります

  • メソッドの命名に制限はありません。たとえば、クラスのメソッド+、-、*などを定義できます。
  • また、Thomas Jungによる以前の回答( https://stackoverflow.com/a/2922456 )で言及されている事実上の「変更されていないルール」(Scala演算子の優先順位ルールによって適用される)に従う必要があります。これは、すべてではないにしても多くのプログラミング言語で一般的です。 、および抽象代数; a + b*cの演算子の優先順位を再定義する必要はありません。

「Rational」クラスの例については、本http://www.scala-lang.org/docu/files/ScalaByExample.pdfの第6章を参照してください。

于 2016-12-12T19:13:05.967 に答える