2016/12/02の30分Kotlinメモ🔥

2016/12/02の30分Kotlinメモ🔥

書いてるコードは雑にここにあります。

github.com

関数

kotlinlang.org

デフォルト引数いいねー。

Named Argumentsもできるので、便利だ。

fun testFun(test: String = "", value: Boolean = true, intV: Int = 1) {
    println(test)
    println(value)
    println(intV)
}

testFun()
testFun("test")
testFun("test", intV = 9)
testFun(value = false)

Properties

kotlinlang.org

これはなんか色々あるので、使って理解していくしかなさそう。

open class User(open val name: String) {

    var gender: Int = 0
        set(value) {
            field = value
        }

    val isAdmin: Boolean
        get() = false
}

プロパティのoverrideもできるのか。なるほど。

class AdminUser(name: String) : User(name) {

    override val name: String
        get() = name.toUpperCase()
}

Interfaces

kotlinlang.org

デフォルト実装もできるので、Java 8に似てるなー。よい。

interface Action {

    // propertyを持てる.interface側では値を設定できない
    val prop: Int

    val name: String
        get() = "action name"

    fun jump()

    // デフォルト実装を持てる
    fun run() {
        println("run")
        println(prop)
        println(name)
    }
}

class TestAction : Action {
    override val prop: Int = 1

    override val name: String
        get() = super.name + " test"

    override fun jump() {
        println("TestAction jump")
    }
}

Visibility Modifiers

kotlinlang.org

何もつけないとpublicになる。なるほど。

ちょっとJavaと違うので、これは使いながら学ぶしかなさそう。まだはっきりわかってない。

package test

// 何もつかないとpublic
class Event {

    // 値の参照はできるが、setterはこのファイル内からしかできない
    var value = 0
        private set

    internal val name = "test"

    private fun test() {
        value = 10
    }
}

まとめ

うむ、よい。当たり前のことが当たり前にできる喜び。