見出し画像

Swiftでいこう -- Closureとは

Closureとは関数を単純化、簡単に表記してコードを簡潔にわかりやすくする仕組み。

数字の並び替えを題材に考えてみましょ。

例えば

let num = [4, 2, 1, 3, 5]

配列があります。

これを大きいもの順に並び替えたいとします。コードとしては簡単に

num.sorted(by: > ) 

と書け、実行結果は

[5, 4, 3, 2, 1]

と並び替えできる。

この仕組みClosureで説明していくと。

まず関数としては

func backward(_ s1:Int, _ s2:Int)->Bool{
   return s1 > s2
}

が基本になります。

次にreverseNumに並び替えをいれていきます。

var reversedNum = num.sorted(by:backward)

単純化していきます。
基本は

{ (parameters) -> return type in
statements
}

で、"backward"の部分を単純化したものに変えます。

reversedNum = num.sorted(by: {(s1:Int,s2:Int)->Bool in
return s1 > s2
})

"{(s1:Int,s2:Int)->Bool in
return s1 > s2"
の部分ですね。
}

どんどん省略していきます。

reversedNum = num.sorted(by:{s1,s2 in return s1 > s2 })

reversedNum = num.sorted(by:{s1,s2 in s1 > s2})

reversedNum= num.sorted(by:{$0 > $1})

reversedNum = num.sorted(by: >)

ついに">"のみになりました。コードもずいぶんすっきりしましたね。

この記事が気に入ったらサポートをしてみませんか?