f(arg1, arg2, ...) //f.apply(arg1, arg2, ...) f(arg1, arg2, ...) = value //f.update(arg1, arg2, ..., value)
object Fraction {
def apply(n: Int, d: Int) = new Fraction(n, d)
def unapply(input: Fraction): Option[(Int, Int)] =
if(input.den == 0) None else Some((input.num, input.den))
def main(args: Array[String]): Unit = {
var Fraction(n,d) = Fraction(3, 4) * Fraction(2, 5)
}
}
class Fraction(n: Int, d: Int) {
private val num = n
private val den = d
def*(other: Fraction) = new Fraction(num*other.num, den*other.den)
}
此时d=6,n=20
unapplySeq方法
object Name {
def unapplySeq(input: String) : Option[Seq[String]] =
if(input.trim == "") None else Some(input.trim.split("\\s+"))
def main(args: Array[String]): Unit = {
var Name(first, "van", last) = "A van B"
printf("%s, %s", first, last)
}
}
此时first=A, last=B
浙公网安备 33010602011771号