-->

Java8では、関数型言語の機能をいろいろ取り入れているようなので試してみた。正直、関数型プログラミングは初心者なので間違っているかもしれないのでこれから書いている内容は鵜呑みにしないようにw
他の投稿が大丈夫かと言うと思い込みで間違っているかもしれないので疑ってかかるようにw

お題は、1から10まで足してみる。

続きを読む
このエントリーをはてなブックマークに追加

関数は、"func 関数名(引数リスト)->戻り値型{...}"で定義する。引数リストは、"変数名:型"をカンマ区切りで指定する。

func plus(num1:Int, num2:Int) -> Int {
    return num1 + num2
}

println("1+1=\(plus(1,1))")     // "1+1=2"と表示

可変引数は、"nums:Int..."のように指定する。numsは配列になっていて次のように引数を扱える。

func printNums(nums:Int...)->Void {
    for num in nums {
        println(num)
    }
}

printNums(1,2,3,4,5)
// 1
// 2
// 3
// 4
// 5
// って表示される

関数はファーストクラスオブジェクトで数値と同じように関数の戻り値や引数に指定できる。

// plus関数を返す関数を定義
func makePlus()->((Int, Int)->Int) {
    func plus(num1:Int, num2:Int)->Int {
        return num1 + num2
    }
    return plus     // 関数を返す。
}
var plus = makePlus()

println("1+1=\(plus(1,1))")     // "1+1=2"と表示

関数に引数で関数をわたす例

func plus(num1:Int, num2:Int)->Int {
    return num1 + num2
}

func reduce(nums:[Int], calc:((Int,Int)->Int))->Int? {
    if nums.count == 0 {
        return nil
    }
    var ret = nums[0]
    for var i = 1; i < nums.count; i++ {
        ret = calc(ret, nums[i])
    }
    return ret
}

var sumOpt = reduce([1,2,3,4,5,6,7,8,9,10], plus)
if let sum = sumOpt {
    println("1~10の合計:\(sum)")       // "1~10の合計:55"と表示
} else {
    println("エラー")
}

そーいや、↑で使ったがOptional型についてまだ書いてないな。


このエントリーをはてなブックマークに追加

忘れっぽい人のための正規表現チートシート - Qiita

これは、いいかも。
正直、たまにしか使わないから、きっちり覚えてないのよね。

このエントリーをはてなブックマークに追加

↑このページのトップヘ