SORU
18 Mayıs 2011, ÇARŞAMBA


Ne yapar `:_*` (kolon yıldız alt çizgi) Scala?

this question kod böyle bir parça var:

def addChild(n: Node, newChild: Node) = n match {
  case Elem(prefix, label, attribs, scope, child @ _*) => Elem(prefix, label, attribs, scope, child    newChild : _*)
  case _ => error("Can only add children to elements!")
}

Oldukça açıktır her şey, bu parça dışında: child newChild : _* Ne işe yarar? Ben altında Seq[Düğüm] başka bir Düğüm ile birleştirilmiş ve daha sonra stand? : _* ne yapar?

Şimdiden teşekkürler

CEVAP
18 Mayıs 2011, ÇARŞAMBA


"" . Bu uyarıları ^sup>1sırası.

Yapıcı imzasına bak

new Elem(prefix: String, label: String, attributes: MetaData, scope: NamespaceBinding,
         child: Node*)

olarak adlandırılan

new Elem(prefix, lavel, attrs, scope,
         child1, child2, ... childN)

ama burada sadece bir dizi child1, child2, vb. bu sonuç sıra kurucu için giriş olarak kullanılır.

Mutlu kodlama.


1Bu SLS içinde şirin-adı yok, ama burada detaylar. Olsun önemli şey nasıl Scala tekrarlanan parametreleri Node* yukarıdaki ile gösterilir) ile yöntem bağımsız değişkenleri değiştirir.

_* türü açıklama"SLS. "4.6.2 Tekrarlanan Parametreleri kaplıdır

Parametre bölümü son değer parametresi ekli olabilir“”, örneğin (..., x:T *). * Yöntemin içinde böyle tekrarlanan bir parametre yazın. sıra türü scala.Seq[T]. * T tekrarlanan parametreleri ile yöntemlerin al T bağımsız değişken bir dizi . Tür yöntem m, (p1 : T1 . . . , pn : Tn,ps : S*)U bağımsız değişken uygulanır (e1 . . . k ^ nerede , ek). = n, daha sonra m uygulama türü (p1 : T1,..... alınır . . , pn : Tn,ps : S . . . , ps0S)U, k ¡ n tür olaylar ps dışında herhangi bir parametre adları olduğu S taze.Bu kuralın tek istisnası eğer son tartışmamız gerektiğini işaretlenmiş. _* türü bir açıklama ile bir dizi bağımsız değişken. M yukarıdaki argümanlar uygulanır (e1 . . . ,e0 TR:*_), o zaman bu uygulama m türü olarak ele alınır. (p1 : T1 . . . , pn : Tn,ps :scala.Seq[S])

Bunu Paylaş:
  • Google+
  • E-Posta
Etiketler:

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • Ben Vivona

    Ben Vivona

    24 Ocak 2010
  • Howard Pinsky

    Howard Pinsk

    6 AĞUSTOS 2006
  • InfoPuppet

    InfoPuppet

    15 Kasım 2011