sayscala-tips.blogspot.com
Scala Tips: 5. Scala 的 Null, null, Nil, Nothing, None, Unit
http://sayscala-tips.blogspot.com/2011/05/scala-null-null-nil-nothing-none-unit.html
5 Scala 的 Null, null, Nil, Nothing, None, Unit. Null:是所有 AnyRef 的 subclass, null 是該 class 的唯一 instance。所以每個 AnyRef 都可以指定為 null。 Nothing:是所有 Any 的 subclass。角色與 Null相類似,但 Null 對應到 AnyRef,而 Nothing 對應到 Any。Nothing也是 Null 的 subclass。但 Nothing 並沒有 instance。 None:用在 Option class中,為避免像 Java 常產生 null exception,所以引進 Option,None表示此次的 operation沒有得到資料。 Unit:tuple-0的特殊 class,本身是 Value class(並非Reference class),只有一個 instance ()。 張貼者: 釋迦樂,思家了! 訂閱: 張貼留言 (Atom). Scala - 釋迦樂,思家了. 9 撰寫 Scala 的 script. 7 scalac 的 options.
sayscala-tips.blogspot.com
Scala Tips: 6. Scala 與 Java 之 static method 互相呼叫
http://sayscala-tips.blogspot.com/2011/05/scala-java-static-method.html
6 Scala 與 Java 之 static method 互相呼叫. 1在 Scala 中如何呼叫 Java 的 static method? 很簡單,與在 Java 中使用的方式一樣,「 class.method(param.) 」就可以呼叫到。 Public class J1 { static public void static m1() { System.out.println("J1.static m1."); } }. Class S1 { def print = { println("S1.print."); J1.static m1 / 這裡呼叫 Java 的 static method } }. 2在 Java 中如何呼叫 Scala 的 static method? Scala 中沒有 static method,取而代之使用 object 來取代。 Class S { def print instance = println("S.instance") } object S { def print static = println("S.static") }. 9 撰寫 Sca...
sayscala.blogspot.com
Scala - 釋迦樂,思家了: 5. 再論 class
http://sayscala.blogspot.com/2011/05/5-class_10.html
Scala - 釋迦樂,思家了. 在第 3 章我們討論 class 與 object 的宣告,這個章節我們將延續這個主題,繼續說明與 class 相關的議題。 張貼者: 釋迦樂,思家了! 訂閱: 張貼留言 (Atom). Scala - 釋迦樂,思家了. 5-15 Uniform access principle. 5-13 「無括號 method」與「空括號 method」. 5-11 Data member 與 Access methods. 5-10 Data member 與 method 的 name space. 5-4 檔案與 class 的關係. 5-2 Scala object hierarchy. 4-7 控制結構 - match expression. 4-6 控制結構 - try,例外處理. 4-5 控制結構 - for expression. 4-4 控制結構 - while statement. 4-3 控制結構 - if statement. 4-1 Scala 中的控制結構(Control Structures).
sayscala.blogspot.com
Scala - 釋迦樂,思家了: 5-7. Anonymous class
http://sayscala.blogspot.com/2011/05/5-7-anonymous-class.html
Scala - 釋迦樂,思家了. Anonymous class 就是不具名的 class,通常用在我們不需要給一個很清楚的 class 名稱時。 在 Java 我們時常遇到 anonymous class,anonymous class 讓我們很方便產生一個暫時性的 class。 Java 產生 anonymous class 的語法,通常隨著 create 一個 anonymous class 的 instance 一起。 Runnable r = new Runnable { / 這裡表示產生一個 anonymous class,但implements Runnable interface / 大括號裡面就是該 anonymous class 的內容 / 定義完 anonymous class,馬上 create 一個 instance 傳回去 public void run() { . } }; Thread thrd = new Thread(r).start(); });. 或許語法,你不會很熟悉,但這是很常見的寫法,請把它記住。 Scala 中的語法與 Java 的類似。
sayscala-tips.blogspot.com
Scala Tips: 五月 2011
http://sayscala-tips.blogspot.com/2011_05_01_archive.html
9 撰寫 Scala 的 script. Scala 可以用來撰寫 script,此時你不需先宣告 class,就可以直接執行。 Script 的寫法,與許多 script language 類似,只是使用 Scala 的語法。 在 Scala script file 中,可以直接宣告 function 與變數,直接執行。 Val n = 10 println(n). 上例表示在 Scala script 的檔案內容,只有兩行。Scala interpreter 會直接這兩個 statement。 Scala script 可以使用 args 變數取得外界所傳進來的參數。 Scala interpreter 執行的方式,其實也是先 compile,再執行。 Scala 會把你的 script 變成類似以下的程式碼,然後 compiler,再執行。 Object S { def main(args: Array[String]) { new { / 原來的 script } } }. 你可使用 scalac 來 compile script。 7 scalac 的 options. 2在 Java 中如何...
sayscala.blogspot.com
Scala - 釋迦樂,思家了: 5-1. Single inheritance
http://sayscala.blogspot.com/2011/05/5-1-single-inheritance.html
Scala - 釋迦樂,思家了. Scala 與 Java 一樣,為避免多重繼承所引起的問題,以及簡化語言的複雜性,採取單一繼承的方式,這也是許多程式語言的方式。 但多重繼承並不完全是缺點,它仍是很合乎人們的思考方式,為改善這個缺陷,Java 引進 interface 的觀念。 Scala 中不再支援,但支援更強的功能,叫做 trait(特徵)我們之後會好好解釋 trait。 張貼者: 釋迦樂,思家了! 訂閱: 張貼留言 (Atom). Scala - 釋迦樂,思家了. 5-15 Uniform access principle. 5-13 「無括號 method」與「空括號 method」. 5-11 Data member 與 Access methods. 5-10 Data member 與 method 的 name space. 5-4 檔案與 class 的關係. 5-2 Scala object hierarchy. 4-7 控制結構 - match expression. 4-6 控制結構 - try,例外處理. 4-5 控制結構 - for expression.
sayscala-tips.blogspot.com
Scala Tips: 3. List 中有用的 methods
http://sayscala-tips.blogspot.com/2011/05/list-methods.html
3 List 中有用的 methods. 在 Scala 中 List 是常有用的資料結構,我們可以發現有許多 method 用在處理重複工作時,非常有用。其實這些 method 出現在 Traversable 中(List 繼承 Seq,Seq 繼承 Traversable),只要 繼承自 Traversable 就都可使用這些 method。 這些 method 將 function當成參數傳入,然後各個 element 對該 fucntion做運算,所以熟悉這些 method 也是熟悉 Higher order functionality 的重要基礎。 傳入一單參數的 function(unary function)。 List 每個 element 都呼叫 map 的 function,然後產生與原來 List 相同長度的另一個 List. List(a1, a2, . an) map (f) 會轉化為 List(f(a1), f(a2), ., f(an) 。 List(1, 2, 3) map ( * 2). 上例會得到 List(2, 4, 6). 可以使用 /: 取代 foldLeft&...
sayscala.blogspot.com
Scala - 釋迦樂,思家了: 5-4. 檔案與 class 的關係
http://sayscala.blogspot.com/2011/05/5-4-class.html
Scala - 釋迦樂,思家了. 5-4 檔案與 class 的關係. 在 Java 中,source code 的檔案名稱,以及目錄階層,與你的 class name 與 package 需要相對應。這是你在撰寫 Java 程式時需要注意的。 Java 規定 public class 需要放在與 class 同名的檔案中,目錄結構需要與 package 結構相同。 這樣規定的好處,是可以一目了然,看出原始碼的結構。但壞處是,常常我們會發現,Java 的檔案數很多,目錄層次也很多。最常感到無奈的是,你無法在一個 Java 原始檔案中看到兩個 public class,常常為了一個新的 public class,需要再產生一個 Java 檔案。 不僅僅 source code,甚至所編譯出來的 class file,Java 也會按照 package 的方式,將 class files 放置到對應 package 的目錄中。JVM 因此可以按照目錄,找尋到所需要的 class。 這種與檔案結構相對應的構想,有好也有壞,我們不適合去評判。 張貼者: 釋迦樂,思家了! 5-4 檔案與 class 的關係.
sayscala.blogspot.com
Scala - 釋迦樂,思家了: 5-6. Inner class
http://sayscala.blogspot.com/2011/05/5-4-inner-class.html
Scala - 釋迦樂,思家了. Inner class 在 Java 中時常被使用,在 Scala 中也一樣很常被使用。 Java 宣告 inner class 的方式,是在 class 中 宣告另一個 class。 Inner class 被編譯後,會產生 outer class$inner class 的 classfile。 甚至在 method 中也可以宣告 inner class。 範例:宣告 inner class. Class J1 { class J11 { / inner class void print() { System.out.println("J11"); } } }. 2 J1$J11.class:代表 J11 的 inner class。 範例:在 method 中宣告 inner class,此時只有該 method 才知道這個 inner class。 2 J1$J11.class:代表 J11 的 inner class。 範例:inner class instance 的 creation。 請注意 j1.new J11() 這個特殊語法 } }. 請注意...
sayscala.blogspot.com
Scala - 釋迦樂,思家了: 五月 2011
http://sayscala.blogspot.com/2011_05_01_archive.html
Scala - 釋迦樂,思家了. 5-15 Uniform access principle. Scala 嘗試將 data field 與 method 做進一步的一致化,也就 data field 與 method 區分不要再這麼清楚,以後可以視為同一個種類(可以把這二者想像是同一個東西)。一致化的好處是,sub class 可以很容易使用想要使用的方式,override parent 的 method 或是 val。 1 data field 會產生對應的 method. 2 method 與 data field 的 name space 是同一個. 3 val 可以 override val. 4 val 可以 override def. 12300;Uniform access principle」就是希望 class 的使用者端,可以不理會 class 真正的宣告方式如何,可以使用相同的方式來 access 該 class 的資料。 那要如何達到「uniform access principle」? 我們要達到使用 obj.length 的方式,可以使用的方法. 2 若使用 overrid...