scala类型不匹配,有短路和乘法

scala类型不匹配,有短路和乘法,scala,scala-native,Scala,Scala Native,我有两个函数可以找到一个数的阶乘,其中一个函数使用整数,但第二个函数只使用短函数会产生错误。这是密码 var fac16i:Function2[Short,Short,Short]=新Function2[Short,Short,Short]{ @tailrec超越def应用(x:Short,acc:Short=1):短路={ 如果(x.toShort将.toShort铸件从不需要的位置移动到需要的位置 if (x <= 1) acc else apply((x-1).toShort, (x

我有两个函数可以找到一个数的阶乘,其中一个函数使用整数,但第二个函数只使用短函数会产生错误。这是密码

var fac16i:Function2[Short,Short,Short]=新Function2[Short,Short,Short]{
@tailrec超越def应用(x:Short,acc:Short=1):短路={

如果(x.toShort将
.toShort
铸件从不需要的位置移动到需要的位置

if (x <= 1) acc
else apply((x-1).toShort, (x*acc).toShort)

if(x将
.toShort
铸件从不需要的位置移动到需要的位置

if (x <= 1) acc
else apply((x-1).toShort, (x*acc).toShort)

if(Shorts的x乘法返回Int,在Java中也是如此。不确定其原理是什么,但可能因为两个Shorts的乘法很容易溢出一个Short,所以返回Int是有意义的(这可能也是CPU的限制,但不知道)-在任何情况下,给定的阶乘是一个很容易溢出整数的函数。有一个短版本有什么意义?你通常会使用长整数甚至大整数作为阶乘。-最后。为什么要通过创建一个匿名实例来实现你的函数,而不是创建一个文本或
def
你是我的英雄。Short的乘法s返回Int,这在Java中也是如此。不确定其原理是什么,但可能是因为两个Short的乘法很容易溢出一个Short,因此返回Int是有意义的(这也可能是CPU的限制,但不知道)-在任何情况下,给定的阶乘是一个很容易溢出整数的函数。使用短版本有什么意义?阶乘通常使用长整数甚至大整数。-最后。通过创建匿名实例而不是文本或
def
来实现函数的原因你是我的英雄。