配列はArray<T>クラスであらわされ、C言語などの配列と同じように[]で各項目にアクセスできる。配列の生成と初期化を行う場合、arrayOfを使う。

    var nums:Array<Int> = arrayOf(1, 2, 3)
    println(nums[0])    // 1を表示
    println(nums[1])    // 2を表示
    println(nums[2])    // 3を表示
    println(nums.size)  // 項目数(3)を表示

    var strs:Array<String> = arrayOf("abc", "def")
    println(strs[0])    // "abc"を表示
    println(strs[1])    // "def"を表示

配列の初期値が数列の場合、次のようにラムダ式を使って配列の生成と初期化ができる。

    // 偶数で初期化した配列(5個分)
    var evens = Array(5, {i -> i * 2})

    println(evens[0])   // 0を表示
    println(evens[1])   // 2を表示
    println(evens[2])   // 4を表示
    println(evens[3])   // 6を表示
    println(evens[4])   // 8を表示

プリミティブ型の配列を作る場合はByteArray、ShortArray、IntArrayなどを使う。これは、ボクシングオーバーヘッドのない配列が生成されるが、Array<T>の継承ではない。

    var nums:IntArray = intArrayOf(1, 2, 3)
    
    println(nums[0])    // 1を表示
    println(nums[1])    // 2を表示
    println(nums[2])    // 3を表示
    println(nums.size)  // 項目数(3)を表示

このエントリーをはてなブックマークに追加 Clip to Evernote
ブログランキング・にほんブログ村へ
にほんブログ村

あっ、大事なことを忘れていたw

コメントだ。

Javaなんかと同じように//で改行までのコメントと/* */でのブロックコメントに対応している。また、ブロックコメントはネスト可能になっている。


このエントリーをはてなブックマークに追加 Clip to Evernote
ブログランキング・にほんブログ村へ
にほんブログ村

メソッドとプロパティのオーバーライドは、こんな感じだ。

open class hoge {
    open var hoge1 = ""
    init {
        println("Init hoge")
    }

    open fun hoge() {
        println("hoge.hoge()")
    }
}

class hoge2:hoge() {
    override var hoge1: String
        get() = super.hoge1
        set(value) {
            println("set hoge2.hoge1")
            super.hoge1  = value
        }
    init {
        println("Init hoge2")
    }
    override fun hoge() {
        super.hoge()
        println("hoge2.hoge()")
    }
}

クラスの継承と一緒でメソッドやプロパティをオーバーライドするには、親クラスでopenをつけて宣言されていないといけない。
継承した方のクラスでoverrideを頭に付けて宣言する。
オーバーライドしたメソッド内で親クラスのメソッドを呼ぶにはsuperを使用する。


このエントリーをはてなブックマークに追加 Clip to Evernote
ブログランキング・にほんブログ村へ
にほんブログ村

↑このページのトップヘ