package examples
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)
//重載稱號操作符
}
object Fraction
{
def apply(n:Int,d:Int) = new Fraction(n,d)
def unapply(input:Fraction)=
{
if(input.den==0) None
else Some((input.num,input.den))
}
}
object Example11 extends App{
//元組提取器
val Fraction(a,b) = Fraction(1,2)*Fraction(1,3)
println(a,b)
//額外, 單個參數或者無參數的需要用option;提取任意長度的需要用unapplaySeq
}
本文作者:linger