Я хочу сделать сопоставление шаблонов в Scala, но он должен быть нечувствительным к регистру. Есть ли способ, что я могу написать код без использования отдельных «дел» положений для строчных и прописныхнечувствительный к регистру шаблон в Scala
//person class with first name and last name
case class Person (var fn: String, val ln: String) {
val name = fn
val lastName = ln
}
//two instances. Same last name but cases are different
val a2 = Person("Andy","Cale")
val a3 = Person("Andy","cale")
def isCale(person:Person) {
person match {
//I want that this case should be case insensitive
case Person(_,"Cale") => println("last-name Cale")
case _ => println("not Cale")
}
}
isCale(a2)
lastname Cale
//I want this to also match
isCale(a3)
not Cale
Одна альтернативы извлечь фамилию и сравнить следующий образом, но я заинтересован в поиске, если есть способ сделать это в случае самого себя.
def isCale(a2:A2) {
val s = a2.ln
s.toLowerCase match {
case "cale" => println("last-name Cale")
case _ => println("not Cale")
}
Ваш случай класс не очень идиоматических. Идея состоит в том, что все аргументы/члены класса case должны быть неизменными. В целом, классы case в основном предназначены для представления неизменяемых данных. Если вы предпочитаете классический JavaBean-класс с сеттерами, лучше использовать обычный класс. – marios