1
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

クロージャ

Last updated at Posted at 2024-12-30

はじめに

初見で{ $0.count }とか出てきて驚いた。
引数の型戻り値の型return引数名が徐々に省略されていって、{ $0.count }になるらしい。

クロージャ(≒名前のない処理のまとまり)

{ (引数名1: , 引数名2: ...) -> 戻り値の型 in
     クロージャの実行時に実行される文
     必要に応じてreturn文で戻り値を返却する
 }

石川 洋資; 西山 勇世. [増補改訂第3版]Swift実践入門 ── 直感的な文法と安全性を兼ね備えた言語 WEB+DB PRESS plus (Japanese Edition) (pp. 255-256). 株式会社技術評論社. Kindle Edition.

省略前

var closure: (String) -> Int

closure = { (str: String) -> Int in  
    return str.count
}

closure("abc") // 結果: 3

戻り値の型-> Intを省略

closure = { (str: String) in  
    return str.count
}

closure("abc") // 結果: 3

引数の型: Stringを省略

closure = { str in  
    return str.count
}

closure("abc") // 結果: 3

returnを省略

closure = { str in  
    str.count
}

closure("abc") // 結果: 3

引数名strを省略(簡略引数名を使用)

closure = { $0.count }

closure("abc") // 結果: 3

簡素引数名

簡素引数名を使わない場合

・引数 a と b に名前を付けています。
・名前を使うことで、クロージャ内で引数を扱います。

let add = { (a: Int, b: Int) -> Int in
    return a + b
}

let result = add(3, 5) // 結果は8

簡素引数名を使う場合

・変更点
引数名 (a: Int, b: Int) を削除。
代わりに $0(最初の引数)と $1(2番目の引数)を使っています。

let add = { $0 + $1 }

let result = add(3, 5) // 結果は8
1
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?