練習

手続き型的なリスト処理

object Main {
  def main(args : Array[String]): Unit = {
    var ls = List[int](3, 1, 4)

    ls = ls.sort((x, y) => x < y)

    for (x <- ls)
      println(x)
  }
}


関数型的なリスト処理

List(3, 1, 4).sort((x, y) => x < y).foreach(println)


. の代わりにスペースでもいいのか〜。ついでに関数呼び出しにカッコつけなくていいのね

List(3, 1, 4) foreach println

高階関数

object Main {
  // 1秒ごとに func 関数を実行
  def timerCallback(func: () => Unit): Unit = {
    while (true) {
      func()
      Thread.sleep(1000)
    }
  }

  // Hello を出力
  def hello() = println("Hello")

  def main(args : Array[String]): Unit = {
    // 1秒ごとに Hello を出力
    timerCallback(hello)
  }
}


ラムダ式

object Main {
  // 1秒ごとに func 関数を実行
  def timerCallback(func: () => Unit): Unit = {
    while (true) {
      func()
      Thread.sleep(1000)
    }
  }

  def main(args : Array[String]): Unit = {
    // 1秒ごとに Hello を出力
    timerCallback(() => println("Hello"))
  }
}


以下の2行は同じ意味になる

// リストから 1 より大きい要素を抽出
List(3, 1, 4).filter(_ > 1).foreach(println)
List(3, 1, 4).filter(x => x > 1).foreach(println)

シンタックス・ハイライトにはとりあえず java を使っている