Swift3の関数(クロージャ)の書き方6+1選

こんにちは!ぐちです。

仕事でSwift3を書く機会があったとお伝えしましたが、最近は上司から無茶振りされることがあります。Kotlinとかやったこともないのに、コードレビューよろしくね!とか言われます。笑

まぁその中でSwift3の関数の使い方?書き方?を何パターンか調べたので、ご紹介しようかなと思います。超初心者的な内容ですが、いつも通り備忘録ということで。笑

関数の書き方6選

引数なし

まずは引数なしのパターンです。

返却値なし
func hoge() {
    print("hoge")
}

hoge()

一番簡単といいますかシンプルな形ですね。

返却値あり
func hoge() -> Int {
    return 10;
}

let h = hoge()
print(h)

func fuga() -> String {
    return "fuga"
}

let f = fuga()
print(f)

それぞれIntの返却値とStringの返却値を返す関数ですね。

引数あり

続きまして引数ありのパターンです。

返却値あり
func hoge(num : Int) -> Int {
    return num;
}

let h = hoge(num:8)
print(h)
複数引数(数固定)

お次は複数の引数を受け取る場合です。

func hoge(num : Int, str : String) -> String {
    return String(num) + str;
}

let h = hoge(num:8, str:"hoge")
print(h)
複数引数(可変数)

お次は可変引数です。返却値なしバージョンです。

func hoge(str : String...) {
    print(str[0])
    print(str[1])
}

hoge(str: "hoge", "fuga")
デフォルト値

引数を指定されずに呼ばれた際にデフォルト値を設定する書き方です。

func hoge(str : String = "hoge") {
    print(str)
}

hoge()
hoge(str : "fuga")

引数は定数で渡ってくるので値を変更したい場合は、関数内でローカル変数に代入する必要があります。

クロージャ

クロージャとは名前のない関数です。{}で囲まれた処理ブロックですね。メソッドのように呼ばれるのではなく、その場で実行されます。

関数と同様に引数のあり、なしで様々な定義がありますが個別での説明は、下記のコードを見て頂くとして割愛します。笑

変数に代入

クロージャのよく使うパターンとして変数に代入することがあります。

var hoge = {(num: Int) -> Int in
    return num
}

hoge(2)

通信などのコールバックとしてよく使われます。これは覚えておかないとしんどいかもです。

関数の書き方6選とクロージャ1選をご紹介しました。引数のありなしや、返却値のありなしの組合せパターンを、色々と応用きかせてみてください。

では今回はこの辺で。