[Swift] 関数型プログラミング
公開日:
:
最終更新日:2015/12/25
javascript, Swift
関数型プログラミングについて、ストーリー仕立ての面白い記事がありましたので紹介します。
IQ145で美少女JKな先輩に「関数型プログラミング」を特訓してもらえた僕の5日間の記録
Swiftでも同じように関数型を宣言しておくことができます。
reduce → 配列内を合算
reduceは配列内の合計値が取得できます。
記事にあったJavaScript。
var plus = function(a, b) { return a + b; }; var s = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9].reduce(plus); console.log(s);
Swiftで書くとこうなります。
var plus = { (a : Int, b : Int) -> Int in a + b } var s = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9].reduce(0, plus) println(s) // 45が出力
ちなみに
[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
の配列の宣言を
[0...9]
にして省略しちゃうと、何故かエラーになります。ご注意を。
reduceのほかに、filterやmapでも同様のことが可能です。
filter → 配列をフィルタリング
filterは配列のフィルタリングです。
1〜9の配列内の値を偶数でフィルタリングして抜き出します。
var filterEven = { (a : Int) -> Bool in a % 2 == 0 } var filterResult = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9].filter(filterEven) println(filterResult) // [0, 2, 4, 6, 8』が出力
map → 配列内の変更
mapは配列内の値の変更します。
1〜9の配列内の値を2倍します。
var mapMultiply = { (a : Int) -> Int in a * 2 } var mapResult = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9].map(mapMultiply) println(mapResult) // [0, 2, 4, 6, 8, 10, 12, 14, 16, 18]が出力
詳しくはApple公式のリファレンスを参照してください。
Swift Standard Library Reference : Array<T>
ad
関連記事
-
-
[Swift] UITabBarControllerでタブ選択時のイベントを取得する
UITabBarController タブを使った画面を作成する場合はUITabBarContro
-
-
[Swift] optional値の設定(??)
optional値がnilの時 プロジェクトでのテンプレートを選択した時にソースコードが自動生成さ
-
-
[Swift] CoreDataで検索したデータを削除する
CoreDataの検索と削除 前の投稿 CoreDataを使ってみる をふまえて今度は検索&削除
-
-
[Swift] 定数クラスをつくってみる
Objective-cの場合 今回は共通にする定数をまとめるクラスを作ってみます。 まずはO
-
-
[Swift] スクリーンサイズを取得する
スクリーンサイズを取得 iPhoneの幅と高さを取得する関数を紹介します。 iOS8から画面の傾
-
-
[Swift] UITableViewのセルにアクションを設定する
セル選択→アクション UITableViewControllerを使用したテーブルビューの画面があ
-
-
[javascript] Google Maps javaScript API v3の使い方(応用編:Mapの色を変更する)
まだまだあるぞ!Google Maps javaScript API v3 さて、2回にわたって紹
-
-
[Swift] Swiftでいろんなfor文まとめてみた
いろんなfor文 プログラム作成で必ず出てくるfor文を自分なりにまとめてみました。 Swift
-
-
[javascript] Google Maps javascript API v3の使い方(基本編)
Google Maps javaScript API v3とは Google Maps API V
-
-
[Swift] プロパティリスト(plist)の値を取得
plistからデータを取得してみます。 こちらのエントリーも参考にしてみてください。 プロパテ