Scala 如何在函数num()中传递参数?
现在我想给函数Scala 如何在函数num()中传递参数?,scala,Scala,现在我想给函数num()指定一个参数。有可能吗?下面的代码应该可以完成您要做的事情。我所做的改变是: 已删除matchTest的返回类型。Scala将自动推断返回类型为函数值 将方法定义“num”替换为匿名函数 修改了通配符模式匹配的签名,以同时返回与其他模式匹配一致的函数。(这是一个黑客,我希望有人知道更好的方法) 您可以运行返回的匿名函数,如matchTest(4)(2,3)等 object MatchTest4 extends App{ def matchTest(x: Any): An
num()
指定一个参数。有可能吗?下面的代码应该可以完成您要做的事情。我所做的改变是:
object MatchTest4 extends App{
def matchTest(x: Any): Any = x match {
case 1 => def num(p: Int, q: Int): Unit = {
val sum = p + q
println(sum)
}
case 2 => def num(p: Int, q: Int): Unit = {
val sub = p - q
println(sub)
}
case 3 => def num(p: Int, q: Int): Unit = {
val mul = p * q
println(mul)
}
case 4 => def num(p: Int, q: Int): Unit = {
val div = p / q
println(div)
}
case _ => println("Invalid Choice")
}
println("Enter Your Choice")
val b= readInt()
println(matchTest(b))
}
假设我想给p&q赋值,那我该怎么做呢?我是需要在每种情况下分别赋值还是可以立即赋值。p&q是传递给matchTest返回的函数的参数。所以你通过了这个匹配测试(1)(2,3)//p=2,q=3让em知道这是否对你有效或者是否有一些混淆。谢谢
def matchTest(x: Any) = x match {
case 1 => (p: Int, q: Int) => {
val sum = p + q
println(sum)
}
case 2 => (p: Int, q: Int) => {
val sub = p - q
println(sub)
}
case 3 => (p: Int, q: Int) => {
val mul = p * q
println(mul)
}
case 4 => (p: Int, q: Int) => {
val div = p / q
println(div)
}
case _ => println("Invalid Choice"); (a: Int, b: Int) => println("Invalid Choice")
}