2011年4月29日 星期五

2. 可以直接使用 scala 的網站

想學習 Scala 最好的方式是 download Scala package,然後解壓縮到目錄中、設定 path 與 classpath,就可以使用 Scala了。

但如果你不想這麼的麻煩,也有一些網站,讓你線上學習 Scala。
在那些網站,你可敲入 Scala 程式碼,然後執行,就像你使用 scala 直譯器環境一樣。

底下有幾個學習網站,有興趣的朋友可以去看看。
  1. http://www.simplyscala.com/
  2. http://scripster.razie.com/
  3. http://tryscala.org/

2011年4月28日 星期四

1. Java 與 Scala 混用

Java與Scala混用,但該如何compile?以及如何執行?

舉例來說:
1. Java class J1
public class J1 {
 public void print() {
  System.out.println("J1.print...");
 }
}

2. Scala class S1 繼承Java class J1
class S1 extends J1 {
  override def print = {
    println("S1.print...");
  }
}
3. Java class J2 繼承 Scala class S1
public class J2 extends S1 {
  @Override
  public void print() {
    System.out.println("J2.print...");
  }
}
4. Scala class S2 繼承 Scala class J2
class S2 extends J2 {
 override def print = {
  println("S2.print...");
 }
}

5.測試class
public class Test {
 static public void main(String[] args) {
  new J1().print();
  new J2().print();
  new S1().print();
  new S2().print();
 }
}

繼承的方式 J1 <- S1 <- J2 <- S2






















先compile Java程式或先compile Scala程式,好像都不對,因為有cross reference的關係。

其實,scala會parsing Java source code,會預先知道之後會產生的javac會產生的class,運用這種方式,我們可以使用的解決方式如下:

1.使用scalac compile Scala code:此時需要將 java的source code加進去,讓scalac知道有這些 java source code。此步驟會產生所有Scala的classes(雖然有繼承自Java的scala class,此時仍會產生)




會產生以下的classes(注意:此時J1.class, J2.class都尚未產生)












2.使用 javac compile java source code(注意此時需要將scala-library.jar放入classpath中)



















沒有將scala-library.jar放入classpath中,會產生以下的錯誤






3.執行:使用 java 執行,scalac所compile出來的classfile與javac 所產生的classfile是相同的,我們可以把Scala class當成一般正常的 Java class。

注意:在執行時,同樣需要將 scala-library.jar 要放入classpath中