TL;DR
Swift 3.1 で Sequence に追加されたAPI。
Haskellにおける takeWhile
と dropWhile
。
let isEven: ((Int) -> Bool) = { $0 % 2 == 0 }
let xs = [2, 4, 6, 1, 3, 8]
xs.prefix(while: isEven) // => [2, 4, 6]
xs.drop(while: isEven) // => [1, 3, 8]
Trailing Clojure
xs.prefix { $0 % 2 == 0 } // => [2, 4, 6]
xs.drop { $0 % 2 == 0 } // => [1, 3, 8]
文字列で使ってみる
let s = "Hello world!"
String(s.characters.prefix { $0 != " " }) // => "Hello"
String(s.characters.drop { $0 != " " }) // => " world!"
参考
終わり
最近Qiita投稿してなかったので軽いものを書いてみました。
個人的にはやっぱりtakeWhile
なのですけれども。