map,reduce,filter,flatmap
2718 ワード
swiftのこれらの文法はコードをより簡潔にすることができます.Javascriptも似たような文法があると思いますが、それは単にクローズドパッケージを通して配列や集合などをクローズド処理して結果に戻ります.
map
一つの方法では、閉じたパケット内では、一般的な型を返します.これは、行列のタイプ変換を可能にすることを示しています.
簡略化ポイント
数字をやってピンインを回転して
印刷結果:
一つの方法だけがクローズドされています.ブックを返す必要があります.
Reduce
パラメータ間の処理は、クローズドの結果を返します.設定値があります.比較や演算ができます.
2つの方法があります.クローズド内では、1つのシーケンスを返しても良いし、1つのオプション値
クローズド内で任意の値を返し、reduce
配列を返します.
map
一つの方法では、閉じたパケット内では、一般的な型を返します.これは、行列のタイプ変換を可能にすることを示しています.
var values = [2.0,3.0,4.0,5.0]
上記の配列を逐次平方にしたいならば、最も容易に考えられるのは巡回配列であり、その後、各平方var nValues = [Double]()
for value in values {
nValues.append(value * value)
}
に対してであるが、mapを使用すると、let sqares = values.map { (value) -> Double in
return value * value
}
を簡単にして、ここで可変ではない行列を返して、安全点を得ることができるだろう.簡略化ポイント
let squeres = values.map{ value in return value * value }
もう少し簡略化してください.数字をやってピンインを回転して
let squres = values.map{$0 * $0}
簡略点を遊びます.印刷結果:
let scores = [0,28,124]
let words = scores.map { (score) -> String in
return NumberFormatter.localizedString(from: NSNumber.init(value: score), number: .spellOut)
}
Filter一つの方法だけがクローズドされています.ブックを返す必要があります.
let words = scores.map{NumberFormatter.localizedString(from: NSNumber.init(value: $0), number: .spellOut)}
簡略点let event=nums.filter{0%2=0}Reduce
パラメータ間の処理は、クローズドの結果を返します.設定値があります.比較や演算ができます.
["zero", "twenty-eight", "one hundred twenty-four"]
let nums = [1,2,3,5,6]
let event = nums.filter { (num) -> Bool in
return num % 2 == 0
}
このプリセット値を無視すると0に設定されます.let items = [2.0,4.0,5.0,7.0]
簡略化ポイントlet totals = items.reduce(10) { (result, item) -> Double in
return result - item
}
flatMap2つの方法があります.クローズド内では、1つのシーケンスを返しても良いし、1つのオプション値
let totls = items.reduce(0) { (result, item) -> Double in
return result + item
}
をマージした要素let totals = items.reduce(0,+)
のタイプの変換クローズド内の行列を返しても良いし、map let collects = [[2,3,4,5],[1,5,6],[2,4]]
に協力して.クローズド内で任意の値を返し、reduce
let tess = collects.flatMap { $0 }
に協力する.配列を返します.
let tess = collects.flatMap { (tests) -> [Double] in
return tests.map({ (t) -> Double in
return Double(t)
})
}
要素の平方に対して、2つの$0は意味が違っています.let tess = collects.flatMap { (tests) -> Int? in
return tests.reduce(0, { (ls, lh) -> Int in
return ls + lh
})
}
文字列は自動的にnilを削除できます.let tess = collects.flatMap {
param in param.filter { $0 % 2 == 0}
}
let tess = collects.flatMap{ $0.map { $0 * $0} }
相互嵌合チェーン処理let strs = ["li","wang",nil,"xiao","zhang",nil]
let nstrs = strs.flatMap{$0}
let digs = [8,4,3,6,7]
let tots = digs.filter{$0 >= 5}.reduce(0,+)
print(tots)