我試圖執行一些數量型和我打這個問題是'1 * BigInt(1)'如何工作,我該怎麼做?
mynum * 1
的作品,而不是
1 * mynum
我試圖這樣定義的隱式轉換這個
case class Num(v: Int) {
def * (o: Int) = new Num(v*o)
}
implicit def int2Num(v: Int) = Num(v)
但它似乎不工作,因爲我總是得到以下錯誤:
scala> 1 * new Num(2)
<console>:14: error: overloaded method value * with alternatives:
(x: Double)Double <and>
(x: Float)Float <and>
(x: Long)Long <and>
(x: Int)Int <and>
(x: Char)Int <and>
(x: Short)Int <and>
(x: Byte)Int
cannot be applied to (Num)
1 * new Num(2)
^
在另一方面
1 * BigInt(1)
的作品,所以必須有一個辦法,雖然看代碼時,我無法找出解決方案。
什麼是使其工作的機制?
編輯:我創建了一個新的問題,我碰到的實際問題,Why is the implicit conversion not considered in this case with generic parameters?。
好去處!我想我的例子太多了,確實如此。它看起來像我的實際問題是一個不同的,雖然有相同的錯誤信息... – soc