根據斯威夫特本書從蘋果,而不是隱含回報率迅速操場
let names = ["Chris", "Alex", "Ewa", "Barry", "Daniella"]
var reversed = sorted(names, { s1, s2 in return s1 > s2 })
,因爲封閉的體內含有一種單一的表達S1> S2返回一個布爾值,有沒有歧義,所以回關鍵字可以省略:
reversed = sorted(names, { s1, s2 in s1 > s2 })
嗯,這並不在遊樂場工作。 Playground中的錯誤說模糊使用運算符'>'。
更新:同樣,這
reversed = sorted(names, { $0 > $1 })
不起作用。同樣的錯誤。這
reversed = sorted(names, { return $0 > $1 })
呢。
更新2:看到Mike S的回答後,我確信這個錯誤可能是由於Swift String和NSString引起的。我試過
let nums = [3, 5, 1, 2, 10, 9]
var dec = sorted(nums, { n1, n2 in n1 > n2 })
var inc = sorted(nums, { n1, n2 in n1 < n2 })
他們都在使用或不使用import語句。對於String的解決方法並不壞,因爲現在我們只需要使用>運算符來比較String就可以輸入return。
那麼這裏有什麼解釋(沒有在正常項目中檢查)?
呵呵,swift手冊的完美例子 - 也不適用於一個項目。 – 2014-10-08 05:36:40
我也注意到了這一點。他們可能已經刪除了這個特別的捷徑。 – 2014-10-08 05:59:39
有趣的是,這些都與'<'運算符一起工作。 – 2014-10-08 06:01:09