Scala 模式匹配bigint
此阶乘实现适用于特定大小的数字:Scala 模式匹配bigint,scala,Scala,此阶乘实现适用于特定大小的数字: def factorial(n:Int):Int = n match { case 0 => 1 case x => x * factorial(x - 1) } 我尝试使用BigInt使它适用于任何大小的数字 val zero = BigInt(0) def factorial(n:BigInt):BigInt = n match { case zero => 1 case x => x * facto
def factorial(n:Int):Int = n match {
case 0 => 1
case x => x * factorial(x - 1)
}
我尝试使用BigInt使它适用于任何大小的数字
val zero = BigInt(0)
def factorial(n:BigInt):BigInt = n match {
case zero => 1
case x => x * factorial(x - 1)
}
无论n的值是多少,对factorial的每次调用都返回1。我假设这是因为第一个案例总是匹配的,并通过将其更改为
case zero => 22
并验证每个输入返回了22
所以我的两个问题是
您应该将
zero
重命名为zero
,或者像这样使用它:
case `zero` => 1
要与变量匹配,请将其包装为“`”
您还可以使val以大写字母开头,如
Zero
。您能解释一下这种语法吗?我是新手scala@jtkSource看变量还是常数?在里面
val zero = BigInt(0)
def factorial(n:BigInt):BigInt = n match {
case `zero` => 1
case x => x * factorial(x - 1)
}