我是Scala的新手。 我有一个功能:
def fromBinaryListBig(in: Array[Int]): BigInt = {
var sum = 0
in foreach (x => {sum <<= 1; sum += (x&1)})
sum
}
是否可以使返回类型通用(整数类型,Long,Int)? 提前谢谢......
答案 0 :(得分:2)
如果匹配泛型参数,则可以使用泛型返回类型...
def fromBinaryListBig[N:Numeric](in: Array[N]): N = in.sum
...但是你不能根据某些内部条件(例如累积和的值)得到不同的(通用的)返回类型。
答案 1 :(得分:0)
技术上,是的,它很可能:
r, g, b, alpha = "rgba(255, 0, 0, 0.5)".scan(/[\d.]+/)
r # => "255"
g # => "0"
b # => "0"
alpha # => "0.5"
这意味着调用者确定了返回类型,因此他们可以编写例如
def fromBinaryListBig[A](in: Array[Int])(implicit ev: Integral[A]): A = {
var sum = ev.zero
val two = ev.fromInt(2)
in foreach (x => {sum *= two; sum += ev.fromInt(x&1)})
sum
}
或指定预期类型
val x = fromBinaryListBig[Byte](Array(0, 1, 0, 1, 0, 0, 0))