假设我想要输入T,如果我输入
val x:T = 34
x: BigInt = 34
val y:T = 34L
y: BigInt = 34
val z:T = BigInt(34)
z: BigInt = 34
这意味着我需要使用Int,Long和BigInt类型构造一个Type T,该类型在SCALA REPL中返回为BigInt。 甚至更好,即使我得到了:
val x:T = 34
x: T = 34
val y:T = 34L
y: T = 34
val z:T = BigInt(34)
z: T = 34
答案 0 :(得分:2)
BigInt
是您的T
类型。
Scala为此内置了隐式转换。
例如
val x: BigInt = 34
val y: BigInt = 34L
val z: BigInt = BigInt(34)
将全部正常工作。
如果您要使用与BigInt不同的类型,则可以使用隐式转换
import scala.language.implicitConversions
class BigIntWrapper(val value: BigInt) extends AnyVal
implicit def IntegralIsBigInt[T: Integral](num: T): BigIntWrapper = {
val ev = implicitly[Integral[T]]
new BigIntWrapper(BigInt(ev.toLong(num)))
}
val a: BigIntWrapper = 4
val b: BigIntWrapper = 4L