2011-05-29 14 views
7

Çok geçmeden Scala'yı boş zamanlarımda almaya çalışan güçlü bir Java geliştiricisiyim. Scala-lang.org sitesinden Scala by Example PDF'den geçiyorum ve ilk örnekte Hızlı Sıralama'nın nasıl çalıştığını karıştırıyorum. İşte kod:scala.Array a Seq nasıl?

object QuickSort extends App { 

    def sort(input: Array[Int]): Array[Int] = { 
    if(input.length <= 1) input 
    else 
    { 
     val pivot = input(input.length/2) 
     Array.concat(
      sort(input filter (pivot >)), 
       input filter (pivot ==), 
      sort(input filter (pivot <)) 
    ) 
    } 
    } 

    sort(Array(5, 4, 3, 2, 1)) foreach println 
} 

Sorum sözdizimi veya bir şey ile değil, ama ben filtre işlevi nereden geldiğini ile karıştı. PDF'ye göre, bunun Sq [T] sınıfından geldiğini ve tüm Dizilerin Seq [T] örnekleri olduğunu söyler. Hepsi iyi ve zeki ve PDF okurken memnun oldum ve çok mutlu bir yeni Scala geliştiricisi oldum. Ama sonra biraz daha derine kazdım ve scaladoc for Array[T]'a bakmaya başladım ve ayrıca Array [T] için kaynak kodunu ve Array [T] sınıfının Seq [T] özelliğini nasıl uzatacağını ya da miras aldığını göremiyorum. Neyi kaçırıyorum?

cevap

9

Implicits eksiksiniz. Yığın Taşması Üzerine implicits hakkında fewquestions var. Okuduğunuz PDF'de, sayfa 15'ten başlayarak sayfa 113'e bakın. Scaladoc'ta, scala.Predef nesnesinde ilgili sonuçları göreceksiniz - sadece giriş parametresi olarak Array alan ve başka bir şey döndüren örtülü yöntemler arayın.

PS: Yikes, Array'un bir Seq olduğunu söylüyor! Bu aslında Scala 2.8'den önce yapılmış olabilir, ama o zamandan beri Array bir Java Array, saf ve basittir.

İlgili konular