Kotlinの書き方
よく使う文法・タグ・操作を、短い例で。42項目から探せます。
42 / 42項目
基本の形や関数内の抜粋を掲載しています。そのまま実行する例と準備方法は、各言語の「学ぶ」ページで確認できます。
変数と表示
valは再代入なし、varは変更できる変数です。
val name = "海"
println(name)条件分岐
条件に応じて処理を変えます。
val age = 20
if (age >= 18) {
println("成人")
} else {
println("未成年")
}繰り返し
範囲の値を順に取り出します。
for (number in 1..3) {
println(number)
}関数
funで処理をまとめます。
fun add(a: Int, b: Int): Int = a + bリスト
複数の値を順番にまとめます。
val names = listOf("海", "空")
println(names[0])データクラス
データのまとまりを簡潔に書きます。
data class User(val name: String)
fun main() {
val user = User("海")
println(user.name)
}nullを扱う
値がない場合の処理を用意します。
val name: String? = null
println(name ?: "名無し")文字列テンプレート
文章に変数の値を入れる。
val name = "海"
println("こんにちは、${name}さん")mutableListOf
変更できるリストを作る。
val names = mutableListOf("海", "空")
names.add("陸")mapOf
キーと値を組にする。
val ages = mapOf("海" to 20)
println(ages["海"])map・filter
各値を変換し、条件で絞る。
val nums = listOf(1, 2, 3)
val doubled = nums.map { it * 2 }
val large = nums.filter { it > 1 }文字列の操作
長さ、分割、部分一致。
val text = "hello"
println(text.length)
println(text.contains("he"))
println("海,空".split(","))when
値で処理を分ける。
val day = 1
val label = when (day) {
1 -> "月曜"
else -> "その他"
}while・break
条件で繰り返す。
var i = 0
while (i < 3) {
i++
if (i == 2) break
}until・step
終点を除いた範囲や飛び飛びの値。
for (n in 0 until 3) println(n)
for (n in 1..5 step 2) println(n)引数の初期値
省略された引数に値を用意する。
fun greet(name: String = "ゲスト") = "こんにちは、$name"ラムダ・forEach
小さな関数で一覧を処理する。
val names = listOf("海", "空")
names.forEach { name -> println(name) }セーフコール
nullなら呼び出しを行わない。
val name: String? = null
println(name?.length)スマートキャスト
型を確認してから操作する。
val value: Any = "海"
if (value is String) println(value.length)class・interface
データと操作の約束。
interface Greeter { fun greet(): String }
class User(val name: String) : Greeter {
override fun greet() = name
}拡張関数
既存の型に使える関数を書く。
fun String.greet() = "こんにちは、$this"
println("海".greet())try・catch
エラーを受け止める。
try {
"海".toInt()
} catch (e: NumberFormatException) {
println("数字ではありません")
}1行を入力する
readlnでキーボードから1行受け取ります。
val name = readln()
println(name)Kotlin 1.6以降のコンソール向けの例です。
文字を安全に数値にする
toIntOrNullは変換できないとnullを返します。
val count = "12".toIntOrNull() ?: 0数値の型を変える
型を変えるときは変換メソッドを呼びます。
val count = 12
val price = count.toDouble()
val whole = 3.8.toInt()toIntは小数部分を切り捨てます。
区切ってリストにする
splitで文字列を区切って分けます。
val colors = "赤,青,白".split(",")
println(colors[0])空白除去と置き換え
trimで空白を除き、replaceで置き換えます。
val text = " hello ".trim()
val message = text.replace("hello", "こんにちは")文字が含まれるか確認
containsやendsWithで文字列を調べます。
val file = "memo.txt"
val isText = file.endsWith(".txt")
val hasMemo = "memo" in fileifの結果を値にする
条件ごとに選んだ値を変数に入れます。
val age = 20
val label = if (age >= 18) "成人" else "未成年"固定の配列を作る
arrayOfは長さが変わらない配列を作ります。
val names = arrayOf("海", "空")
names[0] = "山"
println(names.size)範囲を確認して取得
getOrNullは位置が範囲外ならnullを返します。
val names = listOf("海", "空")
val name = names.getOrNull(5) ?: "ゲスト"並べ替えたリストを作る
sortedは元のリストを変えずに並べ替えます。
val scores = listOf(90, 70, 80)
val ordered = scores.sorted()条件に合う最初の値
firstOrNullは見つからないとnullを返します。
val scores = listOf(60, 90, 80)
val first = scores.firstOrNull { it >= 80 }条件を満たすか確認
anyはどれか、allはすべてが条件を満たすか調べます。
val scores = listOf(70, 90)
val passed = scores.any { it >= 80 }
val allPassed = scores.all { it >= 80 }条件ごとにまとめる
groupByで同じ分類の値をまとめます。
val names = listOf("海", "空", "山田")
val groups = names.groupBy { it.length }変更できる辞書
mutableMapOfで値の追加・削除ができます。
val scores = mutableMapOf("海" to 80)
scores["空"] = 90
scores.remove("海")重複しない集合
setOfは同じ値を1回だけ持ちます。
val colors = setOf("赤", "赤", "青")
println(colors.size)名前付きの引数
引数の名前を書くと値の意味が分かります。
fun show(name: String, age: Int) = println("$name: $age")
show(name = "海", age = 20)呼び出しはmainなどの関数内に書きます。
引数を何個でも受け取る
varargで同じ型の値をまとめて受け取ります。
fun total(vararg values: Int): Int = values.sum()
// total(1, 2, 3)で呼ぶ値があるときだけ処理
?.letでnull以外の値を一時的に使います。
val name: String? = "海"
name?.let { println(it.uppercase()) }状態に名前を付ける
enum classで決まった選択肢を表します。
enum class State { READY, DONE }
// State.READYで使うファイルを読む・書く
Fileでテキストファイルの内容を扱います。
val file = java.io.File("memo.txt")
file.writeText("こんにちは")
val text = file.readText()Kotlin/JVM向けの例です。失敗時は例外になります。既存の内容を上書きします。