EDIT: Я знаю, что я использовал неправильную версию Xcode для Swift 2, теперь. Задача решена.Swift: функция как другой аргумент функции
Я следую за книгой Swift 2 от Apple. В какой-то момент есть следующий пример:
import Foundation
func hasAnyMatches(list: [Int], condition: Int -> Bool) -> Bool {
for item in list {
if condition(item) {
return true
}
}
return false
}
func lessThanTen(number: Int) -> Bool {
return number < 10
}
var numbers = [20, 19, 7, 12]
hasAnyMatches(numbers, condition: lessThanTen)
То, что я думаю, странно, это последняя строка. Почему он говорит condition: lessThanTen
, а не только lessThanTen
? Мой компилятор (Xcode) также дает мне ошибку, делая это так, как показано в книге.
Также: почему он только говорит list: [Int]
в третьей строке, но condition: Int -> Bool
? Почему не что-то вроде list: [Int] -> Int
?
1. Изменение строки на 'func hasAnyMatches (список: [Int], #condition: Int -> Bool) -> Bool' удаляет эту ошибку! «Использование» этой метки не требуется, но упрощает чтение программы, не так ли? – PeterPan
Точно. Ярлыки не являются обязательными, но они сделают код более читабельным и явным. – MustangXY
Спасибо за это объяснение! 2. Какая разница, если я напишу 'list: [Int] -> Int' в объявлении функции? Будет ли это иметь значение вообще? Будет ли он еще работать? – PeterPan