版权声明:转载请标注原文地址。邮箱[email protected] https://blog.csdn.net/Xoxo_x/article/details/80793447
简书:https://www.jianshu.com/u/9ed95c561b48
filter
: 筛选,过滤滤,本意是过滤的意思
map
: 映射,会遍历拷贝一份闭包里面的东西
forEach
: 遍历
split
: 分割,针对某一特定值进行分割,分成为两个数组
reduce
: 归纳,这个 ······
sort
: 排序,排序的方式决定闭包的内容
这些函数在编程中,会起到意想不到的作用
【情形如下:】
从下列名单中筛选出名字中包含字母n
的,并在筛选出的名单中前面添加WX-
,最后打印所得到的筛选结果;
["job","linda","jenny","danny"]
分析:
1.筛选出名字中包含字母n
的
2.在筛选出的名单中前面添加WX-
3.最后打印所得到的筛选结果
常见写法:
var filterNames:[String] = []
for name in names {
if name.contains("n"){
filterNames.append(name)
}
}
var newNames:[String] = []
for name in filterNames{
let newName = "WX-"+name
newNames.append(newName)
print(newName)
}
当使用函数时:
names.filter({$0.contains("n")})
.map({"WX-" + $0})
.forEach({name in print(name)})
这样写起来,不仅看起来简洁,而且代码的可读性非常强,究竟是什么意思呢?
fliter
: 筛选,过滤滤,本意是过滤的意思
map
: 映射,会遍历拷贝一份闭包里面的东西
forEach
:遍历的意思
$0
: 第一个参数,同理会有
2,这里是指传入闭包的第一个参数,与forEach达到遍历的目的
分解如下:
1.
let filterNames = names.filter({$0.contains("n")})
2.
let newNames = filterNames.map({"WX-" + $0})
3.
newNames.forEach({name in print(name)})
map的另一个例子,把数组中的每个值扩大两倍
let nums = [1,2,3,4,5,6,7]
let newNums = nums.map({$0*2})}
或
let nums = [1,2,3,4,5,6,7].map({$0*2})}
sort
: 排序,排序的方式决定闭包的内容
如:
var nums = [1,2,3,4,5,6,7]
nums.sort(by: {$0>$1})
这里就用到了上文的 1
split
: 分割,针对某一特定值进行分割,分成为两个数组
如:
names.split(separator: "linda")
nums.split(separator: 3)
`reduce : 归纳,这个 ······
如:
let nameStr = names.reduce("") { (result:String, str) -> String in
result + str
}
log:
joblindajennydanny
参考链接:
1.https://www.jianshu.com/p/ab12d9582ea0
2.https://beeth0ven.github.io/RxSwift-Chinese-Documentation/content/think_reactive/funtional_programming.html