Небольшое знание, у меня есть функция первого класса, заключается в том, что он поддерживает передачу функций в качестве аргументов, и мы также можем вернуть их как значения в другой функции ... Я очень новичок в языке программирования Swift, пожалуйста, проконсультируйтесь с ним пример.«Функции являются первоклассным типом» в swift?
ответ
Очень простой пример, чтобы продемонстрировать это поведение:
func functionA() {
println("Hello by functionA")
}
func executeFunction(function:() ->()) {
function()
}
executeFunction(functionA)
функция, которая возвращает функцию во время захвата значения из лексической среды:
функции от массива Сравнения, которые возвращают функцию тестового предиката, которая возвращает функцию значения, возвращающего Bool, если это значение является экстремумом тестируемого массива. (Каррирование) функции
первого класса являются функциями, которые могут возвращать другие функции. Например:
func operate(operand: String) -> ((Double, Double) -> Double)?{
func add(a: Double, b: Double) -> Double {
return a + b
}
func min(a: Double, b: Double) -> Double{
return a - b
}
func multi(a: Double, b: Double) -> Double {
return a * b
}
func div (a: Double, b: Double) -> Double{
return a/b
}
switch operand{
case "+":
return add
case "-":
return min
case "*":
return multi
case "/":
return div
default:
return nil
}
}
Функция operate
возвращает функцию, которая принимает два двухместных номера в качестве аргументов и возвращает один дубль.
Использование этой функции:
var function = operate("+")
print(" 3 + 4 = \(function!(3,4))")
function = operate("-")
print(" 3 - 4 = \(function!(3,4))")
function = operate("*")
print(" 3 * 4 = \(function!(3,4))")
function = operate("/")
print(" 3/4 = \(function!(3,4))")
Если вы не заботитесь о выполнении функции, используя функции первого класса, чтобы вернуть эти функции становятся бенефициалы. Кроме того, иногда вы не несете ответственность за разработку (или не авторизацию) функций, таких как add
, min
. Поэтому кто-то разработает для вас функцию первого класса, которая вернет эти функции, и вы несете ответственность за продолжение.
Спасибо за подробное объяснение – skkrish
Вы хотите прочитать [Типы функций] (https://developer.apple.com /library/ios/documentation/Swift/Conceptual/Swift_Programming_Language/Functions.html#//apple_ref/doc/uid/TP40014097-CH10-XID_270) в книге Apple Swift. –