▶ 技術めも
kotlin memo
geter,seter は dataクラス
シングルトン class -> object
高階関数
ラムダ式
Unit = void
func main(args: Array<String>): Unit{
println("Hello World")
return Unit
}
package com.example.firstkotlinapp
import android.support.v7.app.AppCompatActivity
import android.os.Bundle
class MainActivity : AppCompatActivity() {
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_main)
}
}
val num : Int = 1
var num2 : Int = 2
val result : String = if(true) {"true"} else { "false" }
println(result) // =>true
val value = 1
val str = when(value) {
1-> "one"
2-> "two"
else -> "other"
}
val value = 1
when {
value == 1-> println("one")
value == 2-> println("two")
else -> println("other")
}
val array: Array<Int> = arrayOf(1, 2, 3, 4, 5)
for (i in array) {
print(i) // =>12345
}
arrayOf は Kotlin の標準の関数です。この場合は、Array
クトを生成しています。その他にもコレクション生成の関数が揃っています。
mapOf:マップを生成する関数
listOf:リストを生成する関数
setOf:セットを生成する関数
その他にも Range を使った書き方も可能です。
Kotlin における通常の型は null の代入を許容しません。
Null 許容型のメソッドやプロパティを参照するとコンパイルエラー
var b: String? = "abc"
val l : Int = if(b != null) b.length else -1
?演算⼦を使えば、Null 許容型のメソッドやプロパティを参照することができます。
val l : Int? = b?.length
エルビス演算
val l : Int = b?.length ?: -1
標準関数の requireNotNull
関数は型パラメータを扱うことも可能です。関数名の前に<>を使って宣言します。
fun <T> singletonList(item: T): List<T> {
}
class Person(name: String) {
}
クラス名の後ろに定義するコンストラクターをプライマリーコンストラクターと呼びます
プロパティを作成
class Person(val name: String) {
Kotlin のプロパティには、自動的にバッキングフィールドと呼ばれるものが生成され、実際の値はそこに格納されます。
要は var, val キーワードでフィールドのように記述をするだけで、getter, setter 付きのフィールドが自動生成される
ということです(val は読み取り専⽤なので getter のみ)。
コンパニオンオブジェクト = static
class MyClass {
companion object Factory {
fun create(): MyClass = MyClass()
}
}
open 修飾子がついているクラスについては:で継承することができます。
open class Person(val name: String)
class Student(name: String, val id: Long): Person(name)
package sample.hoge
class Foo
これで Foo クラスは sample.hoge パッケージに属すことになり、
異なるパッケージからは sample.hoge.Foo という名前でアクセスする必要があります。
internal 同⼀モジュール内に限り、全公開です
データクラス
data class Person(val id: Long, var name: String)
data クラスを定義するとコンパイラーが次のメソッドを自動で生成します。
- equals()/hashCode()
- toString()
- componentN()
- copy()
Java の参照型における == による比較は、Kotlin では === で比較
オブジェクトの中身が同じかどうかを==で調べることができます。
型エイリアス(type alias)