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

トップ   新規 一覧 単語検索 最終更新   ヘルプ   最終更新のRSS