3
我想在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")
}
你的情况下,类也不是很习惯。这个想法是,一个案例类的所有参数/成员应该是不可变的。总体而言,案例类主要用于表示不可变数据。如果你更喜欢使用经典的JavaBean类和setter类,最好使用普通类。 – marios