高阶函数,满足(输入一个或者多个函数)作为参数,或者(输出一个或多个函数)作为返回值的条件即为高阶函数。通俗的说,函数的参数或者返回值是函数,就是高阶函数。
swift常见的典型高阶函数map、flatmap、reduce、filter。
简单看一下map:
let nums = [1,2,4]
var nums1 = nums.map { $0+2}
print(nums)
print(nums1)
var num2 = nums.map { a in
a+2
}
print(num2)
print(type(of: num2))
faltmap:
let nums = [1,2,4]
var nums1 = nums.flatMap{ a in
a+2
}
map和flatmap区别:
当解析二维数组的时候,结果不同
let nums0 = [[1,2,3],[4,5,6]]
var nums01 = nums0.map { a in
a.map { a0 in
a0+2
}
}
print(nums01)//结果是:[[3, 4, 5], [6, 7, 8]]
var nums02 = nums0.flatMap { a in
a.map { a0 in
a0+2
}
}
print(nums02)//结果是:[3, 4, 5, 6, 7, 8]
reduce:
let nums = [1,2,4]
var nums1 = nums.reduce(0, { x,y in
x+y
})
print(nums1)//7
filter:
let nums = [1,2,4]
var nums2 = nums.filter { a in
a%2==0
}
print(nums2)//[2,4]
对于高阶函数,个人观点:
高阶函数在UI层并不能体现它的好处,高阶函数仍然离不开代码设计和算法。
高阶函数的好处:更好的优化代码的可读性,简化代码。