(注意,左值實際上是從C語法的術語,我不知道它叫什麼斯卡拉!)你可以在Scala中返回一個可賦值的左值嗎?
努力學習斯卡拉......今天晚上我工作的一個內部DSL對於可能類似於PHP語法的動態範圍的語言。
我的REPL是:歡迎來到Scala版本2.7.6.final(Java HotSpot™客戶端VM,Java 1.6.0)。
我有一些虛構的示例代碼:
class $(any: Any) { def update(sym: Symbol, any: Any) { println("line 2 executed");} def ->(sym: Symbol) : $ = { println("line 1 executed"); return this } def update(any: Any) { println("line 3 executed");} }
預期以下工作:
scala> var a = new $(0) a: $ = [email protected] scala> a('x) = "blah" line 2 executed
在另一方面,爲什麼下面沒有調用1參數更新方法?
scala> a = 1 :6: error: type mismatch; found : Int(1) required: $ a = 1 ^
雖然做了一些試驗和錯誤,我發現這句法好奇:
scala> class A { def this_= { print("hello") } } defined class A scala> var a = new A a: A = [email protected] scala> a = 2 :6: error: type mismatch; found : Int(2) required: A a = 2 ^ scala> a.this_ :7: error: value this_ is not a member of A a.this_ ^
什麼是過度覆蓋「THIS_」上面的意思嗎?它在哪裏?
最後,我想這個工作:
a->'x = "blah"
感謝
最後一個例子不工作,因爲該方法實際上是'THIS_ =''不該this_''='限定的方法(雖然,如果不使用,則該方法將返回'Unit')和無之間的空間時,需要心不是這兩個scalac只是假定你想要'this_ ='方法。 林相當肯定,你想要做什麼心不是可能的,因爲其特殊的'='的方法,但將它與其他一些功能輕鬆可行的(如:'< - ','<=') – 2010-04-15 01:36:26