Bạn cũng có thể làm điều này với nhổ:
object Mult {
def unapply(x: String): Option[(String, String)] = x.split("\\*") match {
case Array(a: String, b: String) => Some(a -> b)
case _ => None
}
}
object Add {
def unapply(x: String): Option[(String, String)] = x.split("\\+") match {
case Array(a: String, b: String) => Some(a -> b)
case _ => None
}
}
def matcher(arg: String) = arg match {
case Mult(left, right) => Binary("*", left, right)
case Add(left, right) => Binary("+", left, right)
case _ => println("not matched")
}
Bạn cũng có thể muốn thực hiện áp dụng phương pháp cho từng vắt như:
def apply(l: String, r: String) = s"$l*$r"
nhưng điều này là không bắt buộc
Là trái và phải của chiều dài cố định? –