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)))