2009-10-17 43 views
1

我正在學習JavaFX Script並試圖將其與Scala進行比較,Scala是另一個非常有趣的用於Java平臺的新語言。是否有比較Scala和JavaFX Script的代碼示例?

在官方的Scala站點中,我發現了this example,這是一個快速排序實現。 然後我寫了下面的等價JavaFX腳本程序(使用NetBeans IDE 6.7.1):

package examples; 

function sort(a: Integer[]): Integer[] { 
    if (sizeof a < 2) 
     a 
    else { 
     def pivot = a[sizeof a/2]; 
     [sort(a[n | n < pivot]), a[n | n == pivot], sort(a[n | n > pivot])]; 
    } 
} 

function run(args: String[]) { 
    def xs = [6, 2, 8, 5, 1]; 
    println(xs); 
    println(sort(xs)); 
} 

既實用程序都非常相似,但我喜歡的JavaFX版本更好。 Scala版本中的那些「_」和「:::」部分看起來不太吸引我...

當然,這兩種語言還有很多,所以我正在尋找更多的例子。 有人知道我在哪裏可以找到一些?或者更好,在這裏發佈其他例子?

回答

3

請記住,Scala語法是靈活的。你可以很容易地寫它沒有「:::」和「_」是這樣的:

package example 

/** Quick sort, functional style */ 
object sort1 { 
    def sort(a: List[Int]): List[Int] = { 
    if (a.length < 2) 
     a 
    else { 
     val pivot = a(a.length/2) 
     List.concat(
     sort(a.filter(n => n < pivot)), 
       a.filter(n => n == pivot), 
     sort(a.filter(n => n > pivot)) 
    ) 
    } 
    } 
    def main(args: Array[String]) { 
    val xs = List(6, 2, 8, 5, 1) 
    println(xs) 
    println(sort(xs)) 
    } 
} 

對於代碼的比較,我通常看http://rosettacode.org/ 它有幾個例子斯卡拉,但沒有JavaFX的人。如果您遠離這個項目,請花點時間爲該網站添加一些JavaFX。 :-)

+0

謝謝,很好的回答!我想到斯卡拉也應該提供命名變量,而不是默認的「_」;最後,代碼非常接近JavaFX Script。 (我猜這些語言真的是JVM的未來。)我會看到爲該網站貢獻一些代碼。 – 2009-10-17 14:41:41

+0

我向Rosetta代碼貢獻了第一個JavaFX Script示例:http://rosettacode.org/wiki/Simple_Windowed_Application#JavaFX_Script。 – 2009-10-17 20:28:52