Top / Scala チュートリアル
とりあえず、リンク集をリンクしといたよ。
これなら、勝手にリンクがメンテしてもらえるから、らくちんだよね。
http://www.slideshare.net/takedasoft/scala28-3334803
http://d.hatena.ne.jp/nazoking/20100513/1273688373
http://inforno.net/articles/2008/02/03/some-scala-tips-for-beginners
val a = Array(1,2,3,4,5) var i= -1;while({i += 1; i < a.size;}) { println(a(i)) }
def exit(status: Int): Nothing = { java.lang.System.exit(status) throw new Throwable() } def assert(assertion: Boolean) { if (!assertion) throw new java.lang.AssertionError("assertion failed") }
def print(x: Any) = Console.print(x) def println() = Console.println() def println(x: Any) = Console.println(x)
object dictionary { val data = Array(null, "A","B","C") def apply(x:String) = x match { case "one" => data(1) case "two" => data(2) case "three" => data(3) } def update(x:String,y:String) = x match { case "one" => data(1) = y case "two" => data(2) = y case "three" => data(3) = y } } dictionary("one") = "X" dictionary("two") = "Y" dictionary("three") = "Z" println(dictionary("one")+","+dictionary("two")+","+dictionary("three"))
def sumPlus(plus: Int, n: Int*) = plus + sum(n :_*)
String.format("%d %s", List(1, "hoge").map(_.asInstanceOf?[AnyRef?]).toArray)
val format = (new SimpleDateFormat?("dd")).format _:Date => String
def test(i:int, j:int) = { printf("i:{0}, j:{1}", i, j) } val f = Function.curried(test _)(1) f(1)
lazyを使います。Streamも使いこなせるとハッピーです。
たとえば、無限フィボナッチ数列は以下のように定義します。
lazy val fib: Stream[Int] = Stream.cons(0, Stream.cons(1, fib.zip(fib.tail).map(p => p._1 + p._2)))
http://inforno.net/articles/2008/03/04/japanese-language-programing-in-scala