我已經想到,爲了創建對象的前綴方法,我可以在方法名的末尾使用:
,因此,我寫道:ScalaIDE - 以冒號結尾的方法的奇怪
def aaa: {
}
它編譯得很好!然而,這是沒有用的,所以我想讓這個方法返回一些東西,所以,不確定,我寫道:
def aaa: = {
}
錯誤!
- identifier expected but '=' found.
- not found: type <error>
好吧,我明白,在: =
編譯器斷裂,我變得好奇,我嘗試:
def aaa: {
println("wow")
}
錯誤了!
illegal start of declaration (possible cause: missing `=' in front of current method body)
那我試試這個:
val a = aaa
和它說(懸停在aaa
),其aaa
簽名def aaa: AnyRef
,所以我嘗試:
def aaa: {
Global
}
其中Global
是object
。仍然錯誤。所以,我的問題是:爲什麼這個語法被允許?我不能使它像前綴方法一樣工作,我不能使用這種方法的副作用,我不能讓它返回任何東西。爲什麼它首先允許我這樣寫?
UPDATE:
我現在試試這個:
def aaa: {} = {
Global
}
和它的作品。所以看起來像{}
表示AnyRef
。開始感覺像我在JavaScript的仙境。
'def foo_:(x:Int)'會沒事的。您必須用'_'來分隔標識符中的字母數字和運算符。 – Debilski
很酷,謝謝! – drexin