[英]Scala: Generic integer return type?
我是Scala的新手。 我有一个功能:
def fromBinaryListBig(in: Array[Int]): BigInt = {
var sum = 0
in foreach (x => {sum <<= 1; sum += (x&1)})
sum
}
是否可以使返回类型通用(整数类型,Long,Int)? 提前致谢 ...
如果与通用参数匹配,则可以具有通用返回类型。
def fromBinaryListBig[N:Numeric](in: Array[N]): N = in.sum
...但是您不能基于某些内部条件(例如,累加总和的值)获得不同的(通用)返回类型。
从技术上讲,是的,这很有可能:
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))
或指定期望的类型
val x: BigInt = fromBinaryListBig(...)
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.