Arrayを複数回す際に役立ちそうなこと
2つのArrayを回して値を取り出したい
アプリの履歴管理とかはstructでまとめてArrayにするのが定石だけど
例えばファイルをリネームするときにわざわざstructを作りたくないのでタプルで回す
普通にやると
let items = try! FileManager.default.contentsOfDirectory(atPath: path)
let renamedItems = items.map{$0.replace("aaa",with:"bbb")}
let tuples = [(String,String)]
for i in items.count-1 {
tuples.append(items[i], renamedItems[i])
}
tuples.forEach{
...
}
となり少し冗長、できればループはメソッドチェーンでやりたい。
タプルで回す
Arrayにextensionで実装
extension Array{
func tupled<T>(_ items:[T])->[(Element,T?)]{return self.enumerated().map{($1,items.index(at: $0))}}
func index(at index:Int)->Element?{return index >= 0 && index < self.count ? self[index] : nil}
}
let items = try! FileManager.default.contentsOfDirectory(atPath: path)
let renamedItems = items.map{$0.replace("aaa",with:"bbb")}
items.tupled(renamedItems).forEach{atPath,toPath in
guard let toPath = toPath else {return}
try! FileManager.default.moveItem(atPath: atPath, toPath: toPath)
}
Author And Source
この問題について(Arrayを複数回す際に役立ちそうなこと), 我々は、より多くの情報をここで見つけました https://qiita.com/ObuchiYuki/items/b13944d1f290f31ccc70著者帰属:元の著者の情報は、元のURLに含まれています。著作権は原作者に属する。
Content is automatically searched and collected through network algorithms . If there is a violation . Please contact us . We will adjust (correct author information ,or delete content ) as soon as possible .