1

私はJavaFXスクリプトを研究しており、Javaプラットフォームのもう1つの非常に興味深い新しい言語であるScalaと比較しようとしています。

公式のScalaサイトで、クイックソートの実装であるこの例を見つけました。次に、次の同等の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バージョンの「_」と「:::」の部分は、私にはあまり魅力的ではありません...

もちろん、両方の言語にはもっとたくさんのことがあるので、私はもっと多くの例を探しています。誰かが私がどこで見つけることができるか知っていますか?またはさらに良いことに、ここに他の例を投稿しますか?

4

1 に答える 1

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/を参照してください 。いくつかの Scala の例がありますが、JavaFX の例はありません。このプロジェクトが進んだら、時間をかけてそのサイトに JavaFX を追加してください。:-)

于 2009-10-17T04:09:22.757 に答える