だけmap()
flatMap()
によって置き換える:呼び出しはエラーをスローしますので、これら の要素が結果に省略される場合
extension SequenceType {
/// Returns an `Array` containing the non-nil results of mapping
/// `transform` over `self`.
///
/// - Complexity: O(*M* + *N*), where *M* is the length of `self`
/// and *N* is the length of the result.
@warn_unused_result
public func flatMap<T>(@noescape transform: (Self.Generator.Element) throws -> T?) rethrows -> [T]
}
try? ...
戻りnil
を。ちょうどデモの目的のために
自己完結型の例:
enum MyError : ErrorType {
case DivisionByZeroError
}
func inverse(x : Double) throws -> Double {
guard x != 0 else {
throw MyError.DivisionByZeroError
}
return 1.0/x
}
let values = [ 1.0, 2.0, 0.0, 4.0 ]
let result = values.flatMap {
try? inverse($0)
}
print(result) // [1.0, 0.5, 0.25]
スウィフト3、についてはError
でErrorType
を交換してください。
「flatMap」を発見してくれてありがとう!私はそれが辞書で動作しないことに気づいた。 – TruMan1
@ TruMan1:私は確信しています。 'map'と' flatMap'の両方を辞書に適用できます。クロージャはkey/valueを引数として呼び出されます。 –
もう一度申し訳ありませんが、再びthx! – TruMan1