5
如果運行此代碼,變量f似乎會影響函數f。無論如何要達到函數f?Swift中函數和變量的命名空間
func f (a:Int)->Int{
return a + 43
}
var f = {(a:Int) in a + 42}
var z = f(1)
println(z)
如果運行此代碼,變量f似乎會影響函數f。無論如何要達到函數f?Swift中函數和變量的命名空間
func f (a:Int)->Int{
return a + 43
}
var f = {(a:Int) in a + 42}
var z = f(1)
println(z)
號
在斯威夫特,函數聲明只是爲你與關閉+可變的事情做了什麼捷徑。也就是說,函數名稱本質上是常量,應該總是這樣看待(你甚至可以傳遞函數名稱,沒有括號作爲參考)。
你正在做的是你將名字f重新命名爲變量閉包。看起來Swift有一個編譯器問題沒有抱怨這個問題。但是,這個問題永遠不會發生在良好的代碼中,所以它不是一個真正的問題。
雖然它可能有點混亂。
爲什麼你試圖做到這一點?又名同名 – 2014-09-04 21:32:59
我不相信有一種方法,我會認爲這是編譯器的缺陷。這應該是一個錯誤。我建議打開一個關於這個的雷達。有趣的是,首先聲明哪個並不重要。 var總是贏。 – 2014-09-04 22:05:58
我會爲它添加一個雷達。 – cfischer 2014-09-05 11:49:16