読者です 読者をやめる 読者になる 読者になる

Swift,Objective-Cプログラミング ~ iOS ~

Objective-C,Swift,Apple Watchなどのプログラミング

【iOS Swift入門 #217】関数プログラミング その2(配列のreduce)

reduce関数はそれぞれの配列の要素を計算し、
ひとつの結果を得るために使用する。

■1から10の数値の奇数の合計値を計算する
関数プログラミングを使わない場合

// 1から10の数値にある奇数を抽出
var odds = [Int]()
for i in 1...10{
    if i % 2 == 1{
        odds.append(i)
    }
}

// 奇数を合計する
var oddTotal = 0
for i in odds{
    oddTotal += i
}

// 結果を出力
println(oddTotal)

※結果(Playground画面)
f:id:fjswkun:20150628135339p:plain

関数プログラミングを使った場合

// 奇数を合計する
var oddTotal = 0
for i in odds{
    oddTotal += i
}

// 結果を出力
println(oddTotal)

// 1から10の数値にある奇数を合計
var oddTotal = Array(1...10)
    .filter{(number) in number % 2 == 1} // 1から10の数値にある奇数を抽出
    .reduce(0){(total, number) in total + number}  // 奇数を合計する

// 結果を出力
println(oddTotal)

※結果(Playground画面)
f:id:fjswkun:20150628135403p:plain

※reduce関数の定義

func reduce<U>(initial: U, combine: (U, T) -> U) -> U

→上記例でいうと、initialのUは0、combineのUはtotal、combineのTはnumber。

■数値の配列の中の最大値を計算

// 数値の配列の中の最大値を計算
let numberArray = [3, 2, 8, 10, 4, 6, 5, 1]

let maxNum = numberArray
    .reduce(0){(result, number) in max(result, number)}

// 結果を出力
println(maxNum)

※結果(Playground画面)
f:id:fjswkun:20150628135424p:plain

■1から10の数値を文字列として出力

// 1から10の数値を文字列として出力
let text = Array(1...10)
    .reduce("配列内の数値は:"){(result, number) in result + " \(number)"}

// 結果を出力
println(text)

※結果(Playground画面)
f:id:fjswkun:20150628135440p:plain


【参考情報】
iOSアプリ開発未経験の人向け
iOSアプリ開発をはじめたとき最初に買った書籍
【アプリ作成未経験の人向け】
Storyboardを使って画面を作成していく。
手順にしたがって操作していくと、ボタンの作成やWebViewの作成などができる。
アプリって、こんな感じで作るんだというのを体験できる。

Swiftではじめる iPhoneアプリ開発の教科書 【iOS 8&Xcode 6対応】

Swiftではじめる iPhoneアプリ開発の教科書 【iOS 8&Xcode 6対応】

・わかりやすくていい、と聞いた本
立ち読みした感じだと【アプリ作成未経験の人向け】

絶対に挫折しない iPhoneアプリ開発「超」入門【Swift & iOS8.1以降 完全対応】

絶対に挫折しない iPhoneアプリ開発「超」入門【Swift & iOS8.1以降 完全対応】

②を終えたくらいの知識の方向け
・アプリ開発独学中に2冊めに購入した書籍
プログラミング知識はなくても、若干理解するのに時間がかかる程度で、
読み進められるわかりやすさがある。

iPhoneアプリ開発塾

iPhoneアプリ開発塾

③中級者、上級者向け

詳解 Swift

詳解 Swift