14言語・590の書き方
CODE ATLAS / 文法辞典

Kotlinの書き方

よく使う文法・タグ・操作を、短い例で。42項目から探せます。

42 / 42項目

基本の形や関数内の抜粋を掲載しています。そのまま実行する例と準備方法は、各言語の「学ぶ」ページで確認できます。

変数と表示

valは再代入なし、varは変更できる変数です。

Main.kt
val name = "海"
println(name)
説明と練習この項目

条件分岐

条件に応じて処理を変えます。

Main.kt
val age = 20
if (age >= 18) {
    println("成人")
} else {
    println("未成年")
}
説明と練習この項目

繰り返し

範囲の値を順に取り出します。

Main.kt
for (number in 1..3) {
    println(number)
}
説明と練習この項目

関数

funで処理をまとめます。

Main.kt
fun add(a: Int, b: Int): Int = a + b
説明と練習この項目

リスト

複数の値を順番にまとめます。

Main.kt
val names = listOf("海", "空")
println(names[0])
説明と練習この項目

データクラス

データのまとまりを簡潔に書きます。

Main.kt
data class User(val name: String)

fun main() {
    val user = User("海")
    println(user.name)
}
説明と練習この項目

nullを扱う

値がない場合の処理を用意します。

Main.kt
val name: String? = null
println(name ?: "名無し")
説明と練習この項目

文字列テンプレート

文章に変数の値を入れる。

Main.kt
val name = "海"
println("こんにちは、${name}さん")
この項目

mutableListOf

変更できるリストを作る。

Main.kt
val names = mutableListOf("海", "空")
names.add("陸")
この項目

mapOf

キーと値を組にする。

Main.kt
val ages = mapOf("海" to 20)
println(ages["海"])
この項目

map・filter

各値を変換し、条件で絞る。

Main.kt
val nums = listOf(1, 2, 3)
val doubled = nums.map { it * 2 }
val large = nums.filter { it > 1 }
この項目

文字列の操作

長さ、分割、部分一致。

Main.kt
val text = "hello"
println(text.length)
println(text.contains("he"))
println("海,空".split(","))
この項目

when

値で処理を分ける。

Main.kt
val day = 1
val label = when (day) {
  1 -> "月曜"
  else -> "その他"
}
この項目

while・break

条件で繰り返す。

Main.kt
var i = 0
while (i < 3) {
  i++
  if (i == 2) break
}
この項目

until・step

終点を除いた範囲や飛び飛びの値。

Main.kt
for (n in 0 until 3) println(n)
for (n in 1..5 step 2) println(n)
この項目

引数の初期値

省略された引数に値を用意する。

Main.kt
fun greet(name: String = "ゲスト") = "こんにちは、$name"
この項目

ラムダ・forEach

小さな関数で一覧を処理する。

Main.kt
val names = listOf("海", "空")
names.forEach { name -> println(name) }
この項目

セーフコール

nullなら呼び出しを行わない。

Main.kt
val name: String? = null
println(name?.length)
この項目

スマートキャスト

型を確認してから操作する。

Main.kt
val value: Any = "海"
if (value is String) println(value.length)
この項目

class・interface

データと操作の約束。

Main.kt
interface Greeter { fun greet(): String }
class User(val name: String) : Greeter {
  override fun greet() = name
}
この項目

拡張関数

既存の型に使える関数を書く。

Main.kt
fun String.greet() = "こんにちは、$this"
println("海".greet())
この項目

try・catch

エラーを受け止める。

Main.kt
try {
  "海".toInt()
} catch (e: NumberFormatException) {
  println("数字ではありません")
}
この項目

1行を入力する

readlnでキーボードから1行受け取ります。

Main.kt
val name = readln()
println(name)

Kotlin 1.6以降のコンソール向けの例です。

この項目

文字を安全に数値にする

toIntOrNullは変換できないとnullを返します。

Main.kt
val count = "12".toIntOrNull() ?: 0
この項目

数値の型を変える

型を変えるときは変換メソッドを呼びます。

Main.kt
val count = 12
val price = count.toDouble()
val whole = 3.8.toInt()

toIntは小数部分を切り捨てます。

この項目

区切ってリストにする

splitで文字列を区切って分けます。

Main.kt
val colors = "赤,青,白".split(",")
println(colors[0])
この項目

空白除去と置き換え

trimで空白を除き、replaceで置き換えます。

Main.kt
val text = " hello ".trim()
val message = text.replace("hello", "こんにちは")
この項目

文字が含まれるか確認

containsやendsWithで文字列を調べます。

Main.kt
val file = "memo.txt"
val isText = file.endsWith(".txt")
val hasMemo = "memo" in file
この項目

ifの結果を値にする

条件ごとに選んだ値を変数に入れます。

Main.kt
val age = 20
val label = if (age >= 18) "成人" else "未成年"
この項目

固定の配列を作る

arrayOfは長さが変わらない配列を作ります。

Main.kt
val names = arrayOf("海", "空")
names[0] = "山"
println(names.size)
この項目

範囲を確認して取得

getOrNullは位置が範囲外ならnullを返します。

Main.kt
val names = listOf("海", "空")
val name = names.getOrNull(5) ?: "ゲスト"
この項目

並べ替えたリストを作る

sortedは元のリストを変えずに並べ替えます。

Main.kt
val scores = listOf(90, 70, 80)
val ordered = scores.sorted()
この項目

条件に合う最初の値

firstOrNullは見つからないとnullを返します。

Main.kt
val scores = listOf(60, 90, 80)
val first = scores.firstOrNull { it >= 80 }
この項目

条件を満たすか確認

anyはどれか、allはすべてが条件を満たすか調べます。

Main.kt
val scores = listOf(70, 90)
val passed = scores.any { it >= 80 }
val allPassed = scores.all { it >= 80 }
この項目

条件ごとにまとめる

groupByで同じ分類の値をまとめます。

Main.kt
val names = listOf("海", "空", "山田")
val groups = names.groupBy { it.length }
この項目

変更できる辞書

mutableMapOfで値の追加・削除ができます。

Main.kt
val scores = mutableMapOf("海" to 80)
scores["空"] = 90
scores.remove("海")
この項目

重複しない集合

setOfは同じ値を1回だけ持ちます。

Main.kt
val colors = setOf("赤", "赤", "青")
println(colors.size)
この項目

名前付きの引数

引数の名前を書くと値の意味が分かります。

Main.kt
fun show(name: String, age: Int) = println("$name: $age")
show(name = "海", age = 20)

呼び出しはmainなどの関数内に書きます。

この項目

引数を何個でも受け取る

varargで同じ型の値をまとめて受け取ります。

Main.kt
fun total(vararg values: Int): Int = values.sum()
// total(1, 2, 3)で呼ぶ
この項目

値があるときだけ処理

?.letでnull以外の値を一時的に使います。

Main.kt
val name: String? = "海"
name?.let { println(it.uppercase()) }
この項目

状態に名前を付ける

enum classで決まった選択肢を表します。

Main.kt
enum class State { READY, DONE }
// State.READYで使う
この項目

ファイルを読む・書く

Fileでテキストファイルの内容を扱います。

Main.kt
val file = java.io.File("memo.txt")
file.writeText("こんにちは")
val text = file.readText()

Kotlin/JVM向けの例です。失敗時は例外になります。既存の内容を上書きします。

この項目