2
雖然在泛型函數中的閉包中傳遞謂詞,但我卻遇到了以下錯誤。我該如何解決這個問題。在這種情況下如何在閉包中正確傳遞謂詞?
func find <T: IteratorProtocol> (generator : T, predicate: (T.Element) -> Bool) -> T.Element? {
var gen = generator
while let x = gen.next() {
if predicate(x) {
return x
}
}
return nil
}
var nums:[Int] = [2,3,5,6]
錯誤:不能轉換類型的值 '(INT) - >布爾' 預期參數類型 '(_) - >布爾'
let get = find(generator: nums){ (x:Int) -> Bool in
return x <= 4
}
如果我改變的蓋,遵循中,錯誤是 曖昧使用操作者的 '< ='
let get = find(generator: nums) {
$0 <= 4
}
如果我將值轉換爲Int,錯誤:無法推斷通用參數'T'。
let get = find(generator: nums) {
let b = $0 as Int
return b <= 4
}
請出示'nums'聲明 – fnc12