繁体   English   中英

Scala:通用整数返回类型?

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM