基本型の配列を初期化する

基本型の配列の宣言や初期化はいろいろな書き方がありますが、一番使いやすそうなものを厳選して紹介します。

配列の宣言

これが一番スタンダードな気がします。宣言と同時に空の配列にします。

var arr000: [Int] = []
var arr001: [Double] = []
var arr002: [Bool] = []

このような書き方もできます。

var arr000 = [Int]()
var arr001 = [Double]()
var arr002 = [Bool]()

配列の要素を確保しつつ初期化する

repeating と count を使います。

let REQUEST_NUM_ALLOC = 4

var arr000: [Int] = []
var arr001: [Double] = []
var arr002: [Bool] = []

arr000 = Array( repeating: 0,     count: REQUEST_NUM_ALLOC )
arr001 = Array( repeating: 0.0,   count: REQUEST_NUM_ALLOC )
arr002 = Array( repeating: false, count: REQUEST_NUM_ALLOC )

実際に動くコード

下記が実際に動くコードです。

import SwiftUI

struct ContentView: View {

    let REQUEST_NUM_ALLOC = 4

    // 配列を宣言しつつ空とする.
    @State var arr000: [Int]    = []
    @State var arr001: [Double] = []
    @State var arr002: [Bool]   = []

//    // このような書き方もある.
//    @State var arr000 = [Int]()
//    @State var arr001 = [Double]()
//    @State var arr002 = [Bool]()

    @State var s0: String = ""
    @State var s1: String = ""
    @State var s2: String = ""

    var body: some View {

        VStack {

            Spacer()

            Text( s0 )

            Spacer()

            Text( s1 )

            Spacer()

            Text( s2 )

            Spacer()

        }
        .onAppear(){

            // 任意の値で初期化する.
            arr000 = Array( repeating: 0,     count: REQUEST_NUM_ALLOC )
            arr001 = Array( repeating: 0.0,   count: REQUEST_NUM_ALLOC )
            arr002 = Array( repeating: false, count: REQUEST_NUM_ALLOC )

            // for ループで値を仕込む.
            for n in 0 ..< arr000.count {
                arr000[n] = Int(n)
            }

            for n in 0 ..< arr001.count {
                arr001[n] = Double(n) * 0.1
            }

            for n in 0 ..< arr002.count {

                if n % 2 == 0 {
                    arr002[n] = true
                } else {
                    arr002[n] = false
                }

            }

            // for で読み出すのは芸が無いので、forEach を使ってみる.
            arr000.forEach { v in
                s0 += String( format: "%d\n", v )
            }

            arr001.forEach { v in
                s1 += String( format: "%f\n", v )
            }

            arr002.forEach { v in
                s2 += String( format: "%@\n", ( v ? "TRUE" : "FALSE" ))
            }

//            //こちらの場合は true(1), false(0) で表示する.
//            arr002.forEach { v in
//                s2 += String( format: "%d\n", v )
//            }

        }

    }
}

struct ContentView_Previews: PreviewProvider {
    static var previews: some View {
        ContentView()
    }
}