2009-10-17 31 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