Ne bir bütün kullanır Scala alt çizgi?
Anketler scala-lang.org alınan the list bir göz almış ve meraklı bir soru fark ettim: "Can you name all the uses of “_”?". Misin? Evet, lütfen bu işlemi buradan yapın :-) Açıklayıcı örnekler takdir edilmektedir.
CEVAP
Aklıma olanlardır
Varoluşsal tipler
def foo(l: List[Option[_]]) = ...
Yüksek kinded tür parametreleri
case class A[K[_],T](a: K[T])
Göz ardı değişkenler
val _ = 5
Göz ardı parametreleri
List(1, 2, 3) foreach { _ => println("Hi") }
Kalıplarını
Some(5) match { case Some(_) => println("Yes") }
Joker alır
import java.util._
Gizleme alır
import java.util.{ArrayList => _, _}
Noktalama katılarak mektuplar
def bang_!(x: Int) = 5
Atama operatörleri
def foo_=(x: Int) { ... }
Tutucu sözdizimi
List(1, 2, 3) map (_ 2)
Kısmen fonksiyonları uygulanır
List(1, 2, 3) foreach println _
Unuttuğum başkaları da olabilir!
Örnek foo(_)
foo _
farklı neden gösteriliyor:
Bu örnek 37**:
trait PlaceholderExample {
def process[A](f: A => Unit)
val set: Set[_ => Unit]
set.foreach(process _) // Error
set.foreach(process(_)) // No Error
}
İlk durumda, process _
bir yöntem; Scala temsil polimorfik yöntem alır ve monomorphic tür parametresi doldurarak yapmaya çalışır, ama yok olduğunu fark ederyazınbu tür (_ => Unit) => ?
verecek A
(Varoluşsal _
bir tür değildir) için doldurulabilir.
İkinci durumda, process(_)
açık tartışma ile lambda yazın yazarken bir lambda;, Scala foreach
beklediği değişkeni türünü otomatik olarak tanır ve _ => Unit
bir türü (oysa sadece düz _
değil), bu yüzden yerine ve türetilmiş olabilir.
Bu şimdiye kadar karşılaştığım Scala içinde en zor yakaladım olabilir.
Alt çizgi veya alt çizgi değil, işte b...
Bütün çizgi yerine bir dize Sed kullan...
Ne yapar `:_*` (kolon yıldız alt çizgi...
Yukarı Taşı ve aşağı Vim bütün çizgi...
Scala - HATA alt çizgi: genişletilmiş ...