関数オブジェクト
object MyApp{
  def multi(a: Int, b: Int) = a * b
  val multFunc = (_: Int) * (_: Int)
  def main(args: Array[String]): Unit = {
    println(multFunc(3, 5))
  }
}
関数のカリー化
object MyApp {
  def main(args: Array[String]): Unit = {
    // 関数のカリー化
    val multFunc = (a: Int, b: Int) => a * b
    val multFuncCurried = (a: Int) => ((b: Int) => a * b)
    // println(multFunc(3, 5))
    // println(multFuncCurried(3)(5))
    val double = multFuncCurried(2)
    val tripple = multFuncCurried(3)
    println(double(5)) // 10
    println(tripple(5)) // 15
  }
}
関数の部分適用
object MyApp {
  def msg(from: String, to: String, text: String) = s"($from -> $to): $text"
  def main(args: Array[String]): Unit = {
  val msgToKouda = msg(_: String, "Kouda", _:String)
  println(msgToKouda("yamagata", "OK!"))
  println(msgToKouda("yoshimoto", "Great"))
  println(msgToKouda("eto", "good"))
  }
}
タプル
object MyApp {
  def swap(a: Int, b: Int) = (b, a)
  def main(args: Array[String]): Unit = {
  // val data = (12, "igarashi", 52.6)
  // println(data._1)
  // println(data._2)
  // println(data._3)
  val (x, y) = swap(32, 55)
  print(x)
  print(y)
  }
}
List
object MyApp {
  def main(args: Array[String]): Unit = {
    // val scores = List(200, 300, 400)
    val scores = 200 :: 300 :: 400 :: Nil
   println(scores.length)
   println(scores.isEmpty)
   println(scores.tail)
   println(scores.head)
   println(scores(1))
  }
}
set
object MyApp {
  def main(args: Array[String]): Unit = {
    //val answers = Set(5, 3, 4, 5)
    //println(answers)
    // println(answers.container(3))
    //println(answers(3))
    val set1 = Set(1, 3, 5, 8)
    val set2 = Set(3, 5, 7, 9)
    println(set1 & set2)
    println(set1 | set2)
    println(set1 &~ set2)
  }
}
map
object MyApp {
  def main(args: Array[String]): Unit = {
   val sales = Map("yoshida" -> 200, "kimura" -> 500)
   println(sales("yoshida"))
   println(sales("kimura"))
   println(sales.contains("murata"))
  }
}
mutable
    val scores = scala.collection.mutable.Map("ito" -> 55, "yamamoto" -> 65)
   scores("ito") = 60
map, filter, foreach
object MyApp {
  def main(args: Array[String]): Unit = {
    val prices = List(52.3, 48.6, 32.8)
    prices.map(_ * 1.08).filter(_ > 50).foreach(println)
  }
}