Desen, çoklu argüman listeleriyle bir sınıf nasıl eşleştirilir?
class DateTime(year: Int, month: Int, day: Int)(hour: Int, minute: Int, second: Int)
ben gibi bir şey karşı maç isterseniz unapply
yöntemi gibi nasıl görüneceğini:
dt match {
case DateTime(2012, 12, 12)(12, _, _) => // December 12th 2012, 12 o'clock
/* ... */
}
bu çalıştı:
def unapply(dt: DateTime) =
Some((dt.year, dt.month, dt.day),(dt.hour, dt.minute, dt.second))
Ama bu
bu sınıfı düşünün Gerçekten çalışmadı.
Birden çok parametre listesi olabileceğinden, birden çok parametre listesi güzeldir. –
Belki bu biraz tartışmalı bir örnektir, ancak eğer 'Case class MyCase [A <: WithBar] (a: A) (b: A # Bar) 'diyebilseydiniz ve tüm" şık özellikleri "kutusundan çıkarırsanız 'a' için tip açıklama olmaksızın val x = MyCase (FooWithBar (...)) (Bar (...)) 'gibi yeni örnekler oluşturmak mümkün olabilir. 'MyCase [A <: WithBar] (a: A, b: A # Bar)' gibi bir imza ile 'val x = MyCase [FooWithBar] (FooWithBar (...), Bar (..) ile eşleştirmeniz gerekir. .)), çünkü tür çıkarımı, "A" türünde parametre olarak aynı parametre listesinde belirtildiğinde "A # Bar" için çalışmaz. – falconepl
Örnek sınıf günlüğünden kaçınmanın bir başka nedeni. Dilin birçok gelişmiş özelliği (veya konsepti) ile iyi oynamazlar. – matanster