10

Scalaの本によると、「Programming In Scala」 -

Scala is an object-oriented language in pure form: every value is an object and every operation is a method call. For example, when you say 1 + 2 in Scala, you are actually invoking a method named + defined in class Int.

そういう意味では、「=」演算子を使った代入演算はどうでしょうか。それも方法ですか?すべてのクラスまたはすべてのクラスがそれを継承しなければならないいくつかの共通のスーパークラス (たとえば、java.lang.Object ?) に存在する必要があるため、可能性は低いと思われます。それとも、すべての操作が実際には Scala のメソッド呼び出しであるとは限らないのでしょうか?

4

3 に答える 3

20

ジャティンの答えに少し追加。=メソッド呼び出しと見なすことができる場合が 1 つありますが、実際には単なる構文糖衣です。醜い s が存在する Scala の OO 部分ではvar、次のように記述できます。

class Test { 
  private var x0: Int = 0
  def x = x0
  def x_=(a: Int) = x0 = a 
}

x次に、新しい int を次のように割り当てることができます。

scala> val t = new Test
t: Test = Test@4166d6d3

scala> t.x = 1
t.x: Int = 1

最後の行は に脱糖されt.x_=(1)ます。この場合、シンタックス シュガーを考えると、それ=はメソッド呼び出しであると言えます。

于 2013-09-30T06:24:22.297 に答える