LoginSignup
3
2

More than 3 years have passed since last update.

クロージャ式での変数・定数の初期化

Last updated at Posted at 2019-09-06

目的

クロージャを用いることで、変数や定数の初期化(定義)を把握しやすいようにします。
ここで言う把握しやすいというのは何回も記述する冗長な変数や定数の初期化コードをアルゴリズムで定義して、可読性の向上や変更点の削減を図ろうという事です。

サンプルコード

1 各マスの値を直接定義

//定義
var board = [[1,1,1],[1,1,1],[1,1,1]]

//実行
board

//結果
[[1,1,1],[1,1,1],[1,1,1]]

変数boardに対して、配列を直接代入する事で実行します。
このままでは数値を変更する際に一つずつ、値を変更しなければいけません。

2 マスの値を変更できるように定義

//定義
var board = Array(repeating: Array(repeating: 1, count:3), count:3)

//実行
borard

//結果
[[1,1,1],[1,1,1],[1,1,1]]

上記のコードではrepeatingで繰り返す値を定義して、countで繰り返す回数を定義します。
そのため内側のArray配列で[1,1,1]を一つ作り、それを外側のArray配列で三回繰り返している形になります。

3 より見やすく

//定義
var board: [[Int]] = {
    let sideLength = 3
    let row = Array(repeating: 1, count: sideLength)
    let board = Array(repeating: row, count: sideLength)
    return board
}()

//実行
board

//結果
[[1,1,1],[1,1,1],[1,1,1]]

以上のコードは前回まで入れ子になっていた配列をletとboardの定数に分けて定義する事で、見やすくなりました。
クロージャを使用すると、このように一連の初期化の手続きの実装を1つの式とすることができます。

3
2
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
3
2