Come follow-up a this domandaRegex e Pattern Matching a Scala Parte II
Ecco alcuni codice che viene compilato ed eseguito in modo corretto, con catture.
val myString = "ACATCGTAGCTGCTAGCTG"
val nucCap = "([ACTG]+)".r
myString match {
case nucCap(myNuc) => println("dna:"+myNuc)
case _ => println("not dna")
}
>scala scalaTest.scala
dna:ACATCGTAGCTGCTAGCTG
Ecco un codice più semplice, senza acquisizione, che non viene compilato.
val myString = "ACATCGTAGCTGCTAGCTG"
val nuc = "[ACGT]+".r
myString match {
case nuc => println("dna")
case _ => println("not dna")
}
>scala scalaTest.scala
scalaTest.scala:7: error: unreachable code
Sembra che la corrispondenza debba restituire un valore booleano indipendentemente dal fatto che venga utilizzata un'acquisizione. Cosa sta succedendo qui?
non fare il pasticcio ma perché dice che il caso predefinito è irraggiungibile (caso _ => println ("not dna")) –
Mi mancava quello nella mia risposta - lo aggiorna ora per spiegarlo. –