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

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

【iOS Swift入門 #220】関数プログラミング その5(Partial Function 部分関数・部分適用)

関数プログラミングではPartial Function(部分関数・部分適用)という用語があるようだ。

いろいろ調べてみたがよくわかっていないが、
一応下記の通りかと納得させている。

あるひとつまたは複数の引数を指定できるメソッドや関数から、指定できる引数を減らした関数を作成すること、と理解した。

概念はよくわかっていないが使っていくうちに覚えるだろう、
ということで実際に書いてみる。

■文字列を指定の文字で区切る
スペース区切り文字列をスペースで区切り配列を作成する。
カンマ区切り文字列をカンマで区切り配列を作成する。

・Partial Function(部分関数・部分適用)を使わない場合

import Foundation

//関数プログラミングを使わない
let data = "コーラ オレンジジュース スプライト ボス"
let csv = "ハワイ,バリ,上海,台湾,香港"

println(data.componentsSeparatedByString(" "))
println(csv.componentsSeparatedByString(","))

f:id:fjswkun:20150629202911p:plain

・Partial Function(部分関数・部分適用)を使う場合

import Foundation

// Partial Function(部分関数・部分適用)を使う場合
let data = "コーラ オレンジジュース スプライト ボス"
let csv = "ハワイ,バリ,上海,台湾,香港"

func createSplitter(separator:String) -> (String -> [String]){

    func split(source:String) -> [String]{
        return source.componentsSeparatedByString(separator)
    }
    return split
}

// スペース区切り
let spaceSplitter = createSplitter(" ")
println(spaceSplitter(data))

// カンマ区切り
let commaSplitter = createSplitter(",")
println(commaSplitter(csv))

f:id:fjswkun:20150629202932p:plain

・内部関数を使わずにPartial Function(部分関数・部分適用)

import Foundation

//内部関数を使わないでPartial Functionを洗練する
let data = "コーラ オレンジジュース スプライト ボス"
let csv = "ハワイ,バリ,上海,台湾,香港"

func createSplitter(separator:String)(source:String) -> [String]{
    return source.componentsSeparatedByString(separator)
}

// スペース区切り
let spaceSplitter = createSplitter(" ")
println(spaceSplitter(source:data))

// カンマ区切り
let commaSplitter = createSplitter(",")
println(commaSplitter(source:csv))

f:id:fjswkun:20150629202949p: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