Menu
Coddy logo textTech

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"]
challenge icon

チャレンジ

簡単

入力を1行読み取ります。整数(華氏温度)のコンマ区切りリストです。

C = (F - 32) * 5 / 9整数演算で使用して、それぞれを摂氏に変換します(0方向に切り捨て、小数は使用しません)。次の内容を別々の行に出力します。

  1. , で結合した摂氏温度
  2. 各温度につき、接頭辞 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>" を ";" で結合
quiz icon腕試し

このレッスンには短いクイズがあります。レッスンを始めて解答し、進捗を記録しましょう。

ロジックとフローのすべてのレッスン

自分で練習してみよう: Swiftプレイグラウンド