Aşağıdaki işlevi alın:
def fMatch(s: String) = {
s match {
case "a" => println("It was a")
case _ => println("It was something else")
}
}
Bu model güzel bir şekilde eşleşiyor:
scala> fMatch("a")
It was a
scala> fMatch("b")
It was something else
Yapmak istediğim şey şu:
def mMatch(s: String) = {
val target: String = "a"
s match {
case target => println("It was" + target)
case _ => println("It was something else")
}
}
Bu, aşağıdaki hatayı verir:
fMatch: (s: String)Unit
<console>:12: error: unreachable code
case _ => println("It was something else")
Sanırım bunun nedeni, hedefin aslında girdi ne olursa olsun atamak istediğiniz bir isim olduğunu düşünmesidir. İki soru:
Neden bu davranış? Durum sadece kapsamda uygun türe sahip mevcut değişkenleri arayamaz ve önce bunları kullanamaz ve eğer hiçbiri bulunamazsa hedefi şablon eşleştirmesi için bir ad olarak ele alamaz mı?
Bunun için bir çözüm var mı? Değişkenlerle eşleştirmenin herhangi bir yolu var mı? Nihayetinde biri büyük if ifadesi kullanabilirdi, ancak eşleştirme durumu daha zariftir.