在Xcode中操場關閉的陣列做實驗,我收到此錯誤:斯威夫特:曖昧使用運營商的「*」
Playground execution failed: error: closures.playground:11:25: error: ambiguous use of operator '*'
{x in x * x},
我不明白了一個道理語法爲什麼這是不工作的,但它應該是。
我的初始閉合是:
let f = {(x: Int) -> Int
in
return x + 42}
我然後將如此限定的數組:
let closures = [f,
{(x:Int) -> Int in return x * 2},
{x in return x - 8},
{x in x * x}, //This line causes the error.
{$0 * 42}]
每個封閉件的符合f
的簽名,所以這是在Xcode錯誤?如果不是,發生了什麼?
要燕尾上,不應類型在一種情況下可以推斷,就像它是在所有其他情況下明確推斷?
編輯:雨燕2.2,這似乎很好地工作,但我使用Swift3。
這似乎很好地工作,如果我們替換'X * x'與讓說,'X * 8'。或者與一些常數相乘。 –
@RajanMaheshwari這是真的,但'x * x'遵循Swift語法規則,並且不起作用,這對我來說似乎有點兒麻煩。 – NonCreature0714
我猜它是因爲編譯器無法找到x變量與自身相乘的類型,因爲它給出的數據類型爲。然而,乘以一些int常量使其成爲編譯器 –