Map
CoddyのSwiftジャーニー「ロジックとフロー」セクションの一部 — レッスン 23/56。
mapはクロージャを受け取り、それをすべての要素に適用して、結果の新しい配列を返します。新しい配列は、元の配列と同じ長さになります。
let nums = [1, 2, 3, 4]
let doubled = nums.map { $0 * 2 }
print(doubled) // [2, 4, 6, 8]$0 はクロージャの最初のパラメータの短縮形です。短縮しない形式では、パラメータ名と戻り値の型を明示します:
let doubled = nums.map { (n: Int) -> Int in
return n * 2
}map は要素の型を変更することもできます。String を返すクロージャを通じて [Int] をマッピングすると、[String] が得られます。
let labels = nums.map { "#\($0)" }
print(labels) // ["#1", "#2", "#3", "#4"]チャレンジ
簡単1行の入力を読み込みます。カンマ区切りの整数のリスト(華氏温度)です。
それぞれの値を、整数演算(0への切り捨て、小数点なし)の公式 C = (F - 32) * 5 / 9 を使用して摂氏に変換します。以下の内容を別々の行に出力してください:
- 摂氏温度を
,で繋いだもの - 各温度に対して
F=<f> C=<c>という形式のラベルを;で繋いだもの
両方の行で map を使用してください。
入力が 32,212,98,0 の場合、出力は以下のようになります:
0,100,36,-17
F=32 C=0;F=212 C=100;F=98 C=36;F=0 C=-17チートシート
mapは、すべての要素にクロージャを適用し、同じ長さの新しい配列を返します:
let nums = [1, 2, 3, 4]
let doubled = nums.map { $0 * 2 } // [2, 4, 6, 8]$0は、クロージャの最初のパラメータの短縮形です。明示的な形式は以下の通りです:
let doubled = nums.map { (n: Int) -> Int in
return n * 2
}mapは要素の型を変更することができます(例:[Int] → [String]):
let labels = nums.map { "#\($0)" } // ["#1", "#2", "#3", "#4"]自分で試してみよう
let f = readLine()!.components(separatedBy: ",").map { Int($0)! }
// TODO: 1行目 = ","で結合された摂氏
// TODO: 2行目 = ";"で結合されたラベル "F=<f> C=<c>"
このレッスンには短いクイズがあります。レッスンを始めて解答し、進捗を記録しましょう。