我正在嘗試將更新方法添加到Symbol類。無法將更新方法添加到符號
class SymbolUpdate(s: Symbol) {
def update(i: Int) = s.name + i
}
implicit def toSymbolUpdate(s: Symbol) = new SymbolUpdate(s)
但是當我運行的代碼,我得到以下
scala> 's = 1
<console>:327: error: value update is not a member of object Symbol
's = 1
^
但它確實工作時,我直接調用該方法。
scala> 's.update(1)
res41: java.lang.String = s1
或者如果我明確地把一個空的參數數組。
scala> 's() = 1
res42: java.lang.String = s1
不知道我的代碼有什麼問題?
我的印象是單個參數apply方法仍然需要顯式的空參數列表。我花了一些時間在互聯網上查找反例,但無濟於事。你確定你要求的是有效的嗎? (這不是隱含的失敗,因爲2.9.1中的SymbolUpdate的顯式實例化在沒有空的arg列表的情況下也不能更新)。 –
我真的很好奇你在這裏試圖完成什麼。通常'update'用於修改一個可變容器,比如'Array'。這裏'update'不會修改任何內容,只返回一個'String'。 – leedm777
我正在創建一個DSL,其中有「變量」被分配了值並創建了一個這樣的活動模型。在這種情況下,符號被設計爲表示我的DSL中的變量。這個例子並不代表我的用途。只需要它做一些事情來說明我的問題。 –