23 / 2785%

LESSON 23 ・ 関数

mapメソッド

mapで各要素を変換する

func square(_ x: Int) -> Int {
    return x * x
}

let a = [2, 3, 5]
let b = a.map(square)
for x in b {
    print(x)
}

mapは代表的な高階メソッドです。配列の各要素に関数を適用した結果を返します。

たとえば、mapsquareを渡すと、元の配列のすべての要素を2乗した結果を返します。

func square(_ x: Int) -> Int {
    return x * x
}

let a = [2, 3, 5]
let b = a.map(square)
print(b)

PRACTICE

演習問題

コードを自分で書いて実行してから、答えと解説を確認しましょう。

問題1

[2, 3, 5]の各要素を2乗する関数squareを定義し、mapですべての要素を変換した結果を表示してください。

答えと解説を見る

模範解答

func square(_ x: Int) -> Int {
    return x * x
}

let numbers = [2, 3, 5]
let result = numbers.map(square)
print(result)

mapは各要素にsquareを適用します。結果は[4, 9, 25]です。

問題2

整数を1増やす関数addOneを定義し、mapを使って[1, 4, 7]の各要素に適用した結果を表示してください。

答えと解説を見る

模範解答

func addOne(_ x: Int) -> Int {
    return x + 1
}

let numbers = [1, 4, 7]
let result = numbers.map(addOne)
print(result)

mapへ関数addOneを渡すと、すべての要素に同じ処理が適用されます。結果は[2, 5, 8]です。

問題3

点数557088のすべてに5点を加えた新しい配列をmapで作ってください。さらに、変換後の点数をすべて足し、その合計を表示してください。

答えと解説を見る

模範解答

func adjustScore(_ score: Int) -> Int {
    return score + 5
}

let scores = [55, 70, 88]
let adjusted = scores.map(adjustScore)

var total = 0
for score in adjusted {
    total += score
}

print(total)

mapで各点数を変換してから、これまでに学んだループで合計します。変換後は607593なので、合計は228です。