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行読み取ります。整数(華氏温度)のコンマ区切りリストです。
式 C = (F - 32) * 5 / 9 を整数演算で使用して、それぞれを摂氏に変換します(0方向に切り捨て、小数は使用しません)。次の内容を別々の行に出力します。
,で結合した摂氏温度- 各温度につき、接頭辞
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自分で試してみよう
let f = readLine()!.components(separatedBy: ",").map { Int($0)! }
// TODO: 1行目 = celsius を "," で結合
// TODO: 2行目 = ラベル "F=<f> C=<c>" を ";" で結合
このレッスンには短いクイズがあります。レッスンを始めて解答し、進捗を記録しましょう。
ロジックとフローのすべてのレッスン
自分で練習してみよう: Swiftプレイグラウンド