// 変数(val: 不変, var: 変更可能)
val name: String = "たろう"   // immutable(推奨)
var age: Int = 16              // mutable

// 型推論
val pi = 3.14159    // Double と推論される

// 出力
println(s"こんにちは、$name!")  // s"..." で文字列補間
println(s"年齢: ${age}歳")

// 条件分岐(ifは式)
val result = if (age >= 18) "成人" else "未成年"

// パターンマッチ(強力な機能)
val grade = age match {
  case n if n < 13 => "子供"
  case n if n < 18 => "十代"
  case _            => "大人"
}
println(grade)

// ループ
for (i <- 0 until 5) { println(i) }

// リスト(関数型スタイル)
val fruits = List("りんご", "バナナ", "みかん")
fruits.foreach(println)

// map・filter
val doubled = List(1, 2, 3, 4, 5).map(_ * 2)
val evens   = List(1, 2, 3, 4, 5).filter(_ % 2 == 0)

// ケースクラス(データクラス)
case class User(name: String, age: Int)
val user = User("たろう", 16)
println(user.name)  // → たろう