51

Scalaの=との違いは何ですか?:=

「scala colon-equals」を広範囲にグーグル検索しましたが、決定的なものを見つけることができませんでした。

4

4 に答える 4

88

=in scala は実際の代入演算子です。これは、ほとんどの場合制御できないいくつかの特定のことを行います。

  • val作成時にまたはvar値を与える
  • の値を変更するvar
  • クラスのフィールドの値を変更する
  • 型エイリアスの作成
  • おそらく他の人

:=は組み込み演算子ではありません。誰でもオーバーロードして、好きなように定義できます。人々が好んで使用する理由:=は、非常に代入的に見え、他の言語で代入演算子として使用されるためです。

したがって、使用している特定のライブラリでの意味を知りたい:=場合は...私のアドバイスは、Scaladocs (存在する場合) で という名前のメソッドを調べることです:=

于 2011-10-13T04:45:22.040 に答える
59

マーティン・オーデルスキーより:

  • 最初は、Pascal、Modula、Ada と同じように、割り当て用のコロンと等号と、等号を表す単一の等号がありました。多くのプログラミング理論家は、それが正しい方法だと主張するでしょう。代入は平等ではないため、代入には別の記号を使用する必要があります。しかし、その後、Java 出身の何人かの人々と一緒に試してみました。私が得た反応は、「これは興味深い言語のように見えます。しかし、なぜコロンとイコールを書くのですか?? それは何ですか?」とパスカルで説明すると、「今はわかりましたが、なぜそれを主張するのか理解できません」と言われて、それは私たちが主張したいことではないことに気付きました。私たちは、「私たちは代入のために等号ではなくコロンと等号を書いたので、より良い言語を持っている」と言いたくありませんでした.これは完全にマイナーなポイントであり、人々はどちらのアプローチにも慣れることができます.これらの小さなこと、私たちが違いを生みたいと思っていた他の場所があったとき.

「Scala の設計の目標」より

于 2011-10-13T04:47:59.127 に答える
5

Scala では、メソッドを記述するのと同じように、演算子の動作を定義できる演算子のオーバーロードが可能です。

他の言語と同様に=、代入演算子です。

私が知っている標準の演算子である called:=ではありませんが、この名前で定義できます。このような演算子を見つけた場合は、探しているもののドキュメントを確認するか、その演算子が定義されている場所を検索する必要があります。

Scala 演算子でできることはたくさんあります。基本的に、ほぼすべての文字からオペレーターを作成できます。

于 2011-10-13T04:49:27.743 に答える
5

=割り当てを実行します。 :=標準ライブラリまたは言語仕様では定義されていません。必要に応じて、他のライブラリやコードで自由に使用できる名前です。

于 2011-10-13T04:43:41.237 に答える