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