Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/scala/19.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Scala 如何在函数num()中传递参数?_Scala - Fatal编程技术网

Scala 如何在函数num()中传递参数?

Scala 如何在函数num()中传递参数?,scala,Scala,现在我想给函数num()指定一个参数。有可能吗?下面的代码应该可以完成您要做的事情。我所做的改变是: 已删除matchTest的返回类型。Scala将自动推断返回类型为函数值 将方法定义“num”替换为匿名函数 修改了通配符模式匹配的签名,以同时返回与其他模式匹配一致的函数。(这是一个黑客,我希望有人知道更好的方法) 您可以运行返回的匿名函数,如matchTest(4)(2,3)等 object MatchTest4 extends App{ def matchTest(x: Any): An

现在我想给函数
num()
指定一个参数。有可能吗?

下面的代码应该可以完成您要做的事情。我所做的改变是:

  • 已删除matchTest的返回类型。Scala将自动推断返回类型为函数值

  • 将方法定义“num”替换为匿名函数

  • 修改了通配符模式匹配的签名,以同时返回与其他模式匹配一致的函数。(这是一个黑客,我希望有人知道更好的方法)

  • 您可以运行返回的匿名函数,如matchTest(4)(2,3)等

    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")
    }