- 追加された行はこの色です。
- 削除された行はこの色です。
[[SCALAの記事一覧]]
&topicpath;
*目次 [#o164eca9]
#contents
*リンク [#t6f19afd]
とりあえず、リンク集をリンクしといたよ。
これなら、勝手にリンクがメンテしてもらえるから、らくちんだよね。
http://diaspar.jp/-/scala
*Scala2.8の仕様変更 [#x7aff6cc]
http://www.slideshare.net/takedasoft/scala28-3334803
*Scala for Java programmers [#d9a170ae]
http://www.asterisk-works.jp/wiki/index.php/Scala_for_Java_programmers#.E3.82.AF.E3.83.A9.E3.82.B9.E5.AE.A3.E8.A8.80
*java使いのためのScala の勉強のタメの資料作り javaと連携 [#f36af979]
http://d.hatena.ne.jp/nazoking/20100513/1273688373
**JavaにScalaを放り込む [#na886872]
-Java側
import java.lang.Runnable;
public class Fuga {
public static void main(String[] args) {
Runnable n = new Hoge();
n.run();
}
}
-Scala側「
class Hoge extends AnyRef with java.lang.Runnable{
def run():Unit ={
println("running!");
}
}
*基礎を終えた人のScalaミニtips [#i85ab0ca]
http://inforno.net/articles/2008/02/03/some-scala-tips-for-beginners
**C言語ライクなforはどうかくの? [#a9e11e02]
val a = Array(1,2,3,4,5)
var i= -1;while({i += 1; i < a.size;}) {
println(a(i))
}
**Predef [#y07b48aa]
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)
**applyでオブジェクトをメソッドのように呼び出せるよね? hoge(index) = valueはオーバーライドできないの? [#w3a8f9a4]
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"))
**可変長引数は取れますか。また、リストや配列を展開してメソッドにわたせますか。 [#d089283f]
def sumPlus(plus: Int, n: Int*) = plus + sum(n :_*)
**JAVAのObject型可変長変数をとるメソッドはどう呼びますか? [#b9a187a7]
String.format("%d %s", List(1, "hoge").map(_.asInstanceOf[AnyRef]).toArray)
**インスタンスのメソッドを束縛できますか?そのとき、メソッドがオーバーロードされている場合はどうしますか? [#n9d3e1ae]
val format = (new SimpleDateFormat("dd")).format _:Date => String
**カリー化はできますか? [#n0359029]
def test(i:int, j:int) = {
printf("i:{0}, j:{1}", i, j)
}
val f = Function.curried(test _)(1)
f(1)
**遅延評価は? [#k39e33d8]
lazyを使います。Streamも使いこなせるとハッピーです。
たとえば、無限フィボナッチ数列は以下のように定義します。
lazy val fib: Stream[Int] = Stream.cons(0,
Stream.cons(1, fib.zip(fib.tail).map(p => p._1 + p._2)))
*日本語プログラミング言語Scala [#zaa0b8fc]
http://inforno.net/articles/2008/03/04/japanese-language-programing-in-scala
*SlideShareサービスによるプレゼン風チュートリアル [#z48c5488]
http://www.slideshare.net/oukayuka/scala-2272552