Aşağıdaki Scala vaka sınıfını göz önünde bulundurun:Büyük Scala vaka sınıfları nasıl eşleştirilir?
case class WideLoad(a: String, b: Int, c: Float, d: ActorRef, e: Date)
Desen eşleştirmesi bir alan açıp diğerlerini atmamı sağlar, örneğin:
someVal match {
case WideLoad(_, _, _, d, _) => d ! SomeMessage(...)
}
Ne yapmak isterdim ve ne zaman daha alakalı vaka sınıfı ~ 20 tek alanları, WideLoad(_, _, _, _, _, some, _, _, _, thing, _, _, interesting)
yazmayı içermeyen bir şekilde sadece birkaç değeri ayıklamaktır.
Aşağıdaki sözdizimi çalışmadığı halde, adlandırılmış hata kodlarının burada yardımcı olabileceğini umuyordum:
someVal match {
case WideLoad(d = dActor) => dActor ! SomeMessage(...)
// ^---------- does not compile
}
Burada herhangi bir umut var mı, yoksa çok fazla _, _, _, _
yazdım mı?
EDZ: case wl @ WideLoad(...whatever...) => wl.d
yapabildiğimi anlıyorum, yine de ek bir val
tanıtmak zorunda kalmadan ihtiyacım olan şeyleri bile yapan bir sözdizimi olup olmadığını merak ediyorum.
, tüm alt çizgiler okumaya oldukça sert olun. Adlandırılmış bir parametre sözdizimi okunabilirliği çok artırır, ancak henüz böyle bir şey bilmediğim sürece. –
Uzun parametre listelerinin genel olarak kaçınılması gereken bir şey olduğu izlenimindeydim. –
kastediyorsunuz WideLoad (d == dActor) –