Я читаю несколько книг о функциональном программировании в Swift. Когда я вижу, что в некоторых книгах говорится, что функция в swift - это «первоклассная функция», я не понимаю, что означает «первоклассная функция». Кто-нибудь может мне ответить или дать пример кода?
Как быстро понять первоклассную функцию?
Ответы (3)
Функции - это первоклассные граждане Swift, потому что вы можете рассматривать функцию как обычное значение. Например, вы можете…
- назначить функцию локальной переменной,
- передать функцию в качестве аргумента другой функции и
- вернуть функцию из функции.
Это просто модная терминология, которая сейчас в моде. Это просто означает, что у вас может быть переменная, содержащая ссылку на функцию.
Он всегда был в программировании; в C и Fortran есть указатели на функции. Типичное использование в обоих этих языках - передача функции сравнения в функцию сортировки, чтобы функция сортировки могла сортировать данные любого типа.
На некоторых языках, например Java, похоже, у вас нет указателей на функции, но есть указатели на интерфейсы. Итак, вы определяете интерфейс Comparable с помощью метода сравнения и передаете экземпляр Comparable вашей сортировке.
Ничего нового, просто сбивающая с толку терминология знакомого понятия. Предположительно, чтобы попытаться сделать так, чтобы функция казалась новой и сексуальной.
См. Мой ответ в этом вопросе. И я добавлю еще один пример (сначала проверьте пример в этом вопросе):
func operateMono( operand: String) -> (Double -> Double)?{
switch operand{
case "log10":
return log
case "log2":
return log2
case "sin":
return sin
case "cos":
return cos
default:
return nil
}
}
И использование
var functionMono = operateMono("log10")
print ("log10 for 10 = \(functionMono!(10))")
functionMono = operateMono("log2")
print ("log2 for 10 = \(functionMono!(10))")
functionMono = operateMono("sin")
print ("sin 10 = \(functionMono!(10))")
functionMono = operateMono("cos")
print ("cos 10 = \(functionMono!(10))")