Scala şemasının kondisyonuna denk mi?Scala dilinde şema dizisi
cevap
Sanırım match
(veya sadece if/else if/else
numaralı telefonu) arıyoruz.
case class Paired(x: Int, y: Int)
def foo(x: Any) = x match {
case string : String => println("Got a string")
case num : Int if num < 100 => println("Number less than 100")
case Paired(x,y) => println("Got x and y: " + x + ", " + y)
case unknown => println("??: " + unknown)
}
İlk iki durum ifadesi, türe göre desen eşleştirmesi gösterir. Üçüncüsü veriyi bileşen parçalara ayırmak ve bu parçaları değişkenlere atamak için bir Extractor'ın kullanımını göstermektedir. Üçüncüsü, her şeyle eşleşecek olan değişken bir desen eşleşmesini gösterir. Gösterilmedi _ durumdur: değişken desen maçı gibi, her şeye uyar ama bir değişkene eşleşti nesneyi bağlamak değil
case _ => println("what")
.
Üst sınıfta, sınıfın kendisi kadar bir çıkarıcı oluşturmak için Scala kısaltması da bulunuyor.
Elbette, ne match
ne de if
, cond
ile aynı şeyi yapmaz. Bir ihtimal böyle yapmaktır:
object Cond {
def apply(clauses: Iterable[(()=>Boolean,()=>Any)]): Any = {
clauses find (_._1()) map (_._2()) getOrElse()
}
}
Bu nesne, her öğe, Bool ve herhangi dönen bir işlev dönen bir fonksiyonun bir çift şey iterable kabul eder. İlk işlevi doğru olarak döndüren bir öğeyi bulmaya çalışır, bir tane bulup bulmayacağına bakmayı durdurur, ikinci bir işlevi bulunan bir öğe üzerinde çağırır ve bu işlevin sonucunu döndürür (veya(), hiçbiri bulunmazsa).
Örnekler:
val clauses = Seq(
({()=>false}, {()=>println("foo")}),
({()=>true}, {()=>println("bar")})
)
Cond(clauses)
def checkYear(year: Int) = {
Cond(Seq(
({()=>year % 400 == 0}, {()=>42}),
({()=>true}, {()=>{c:Char => (c.toString * 3)}})
))
}
ETA: Evet, öyle çirkin olduğunu biliyorum ama işe yarıyor.
- 1. 2d scala dizisi yineleme
- 2. Scala boş dizisi atama
- 3. JSON Şema tanımı nesnelerin dizisi için
- 4. Gelincik şema
- 5. Şema,
- 6. C dilinde
- 7. Montaj dilinde basit kodlar
- 8. Dart Dilinde Console.log
- 9. Tridion'daki şema nesnesinden şema adı nasıl alınır?
- 10. Şema tuşu benzersiz şema anahtarı ile benzersiz
- 11. Bir çeşit Java/Scala görüntüsüne bayt dizisi. Performansla ilgili düşünceler
- 12. Bir ek açıklama için parametre olarak ek açıklamaların dizisi, Scala
- 13. jwiteArray, native char * jni dilinde nasıl dönüştürülür?
- 14. scala yolu
- 15. Dosyalara işaretçi dizisi oluştur
- 16. Hızlı JavaScript dizisi işlemleri
- 17. Java dilinde Arapça kelimeleri sıralama
- 18. Enum swagger.io dilinde nasıl tanımlanır?
- 19. İfade Dilinde sayı nasıl biçimlendirilir?
- 20. C dilinde seri programlama, DOS
- 21. c dilinde ayrı çıkış verisi
- 22. ptrdiff_t, C dilinde nerede tanımlanır?
- 23. C dilinde dosya uzantısı alma
- 24. C++ dilinde derleme zamanı iddiaları?
- 25. Umlaut'u Almanca dilinde veritabanına kaydetme
- 26. Lua dilinde dosyalar nasıl oluşturulur?
- 27. D dilinde C++ (C) çağrısı
- 28. C dilinde _start() kullanımı nedir?
- 29. Dizisi
- 30. dizisi