雖然與上REPL一些東西嘗試,我到了一個地步,我需要的是這樣的:簡單的Scala語法 - 試圖定義「==」運算符 - 我錯過了什麼?
scala> class A(x:Int) { println(x); def ==(a:A) : Boolean = { this.x == a.x; } }
只是一個簡單的類與「==」操作符。
它爲什麼不工作?
這裏的結果:
:10: error: type mismatch; found : A required: ?{val x: ?} Note that implicit conversions are not applicable because they are ambiguous: both method any2ArrowAssoc in object Predef of type [A](x: A)ArrowAssoc[A] and method any2Ensuring in object Predef of type [A](x: A)Ensuring[A] are possible conversion functions from A to ?{val x: ?} class A(x:Int) { println(x); def ==(a:A) : Boolean = { this.x == a.x; } } ^
這是斯卡拉2.8 RC1。
感謝
我認爲它更準確地說它不是*可訪問的*作爲一個字段,即它不會生成存取方法,除非您在傳入時將其聲明爲'val'。 – 2010-04-21 03:34:45
mm hmm。 Alex可能會因爲其他原因添加'val',但有人可能會將您的答案讀爲暗示爲了訪問equals中'x'所需的值。 – 2010-04-21 13:30:43
我編輯了我的答案,以澄清你需要'val'來訪問'equals'主體中的'a.x'。 – 2010-04-21 13:33:54