2016/12/06の30分 Kotlinメモ⛄

2016/12/06の30分 Kotlinメモ⛄

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

github.com

Destructuring Declarations

kotlinlang.org

sys1yagi.hatenablog.com

分解宣言?かな?

んなこと言われてもわからねーよ!ってことで、以下のような感じ。

val (a1, b1) = ("a" to "b")
println(a1) // a
println(b1) // b

for ((key, value) in mapOf("key1" to "value1", "key2" to "value2")) {
    println(key)
    println(value)
}

for ((a2, b2) in listOf(("a" to "b"), ("aa" to "bb"))) {
    println(a2)
    println(b2)
}

なるほど。便利だ。

Object declarations

kotlinlang.org

Singletonが楽に作れる。

// Singleton
object DataProviderManager {
    fun test() {
        println("test")
    }
}

DataProviderManager.test()

Companion Objects

kotlinlang.org

Kotlinにはstaticがないらしい。なのでその代わりにCompanion Objects使う的な?

んまー使いながらぼちぼち覚えます。

class TestActivity {

    // static
    companion object {
        val a = "test"

        fun createIntent() {
            println("createIntent")
        }
    }
}

TestActivity.createIntnt()
TestActivity.a

Compile-Time Constants

kotlinlang.org

定数?かな? constをつける。

const val RESULT_OK = -1
// const var RESULT_OK = -1 error

class TestActivity {

    // static
    companion object {
        const val RESULT_OK = -1

        val a = "test"

        fun createIntent() {
            println("createIntent")
        }
    }
}

以下の条件を満たす必要があるらしい。

  • Top-level or member of an object
  • Initialized with a value of type String or a primitive type
  • No custom getter

なので、以下のようにPairとかは無理なのね。

const val a = ("a" to 1)

どこで使うんだろ?定数っぽいけどそうじゃない的な?

まとめ

謎いことが多かったので、ちょっと色んなコード見たり、書いたりして理解した方がよさげ。