我是Scala编程的新手,并尝试创建Case-Match或Switch-Case语句,该语句根据输入值调用不同的函数。如何将函数名称传递给Scala中的Case-Match语句
例如,请参阅示例代码片段。希望这解释了什么我打算做
def getValue(x: Any):String = x match {
case "Value1"=> Function1(int)
case "Value2"=> Function2(int)
case _ => println("This is an invalid value")
}
def Function1(int) {
Do Something
}
def Function2(int) {
Do Something
}
当我给这个样子,我得到一个错误,如下图所示:
Error:(26, 34) type mismatch;
found : Unit
required: String
case "Value1"=> Function1(int)
编辑: 修改的getValue的返回类型成为“单元”而不是“字符串”。现在,这个错误被解决,但我收到以下错误消息
Error:(26, 22) forward reference extends over definition of value spark case "Value1"=> Function1(int)
修改后的代码片段
def getValue(x: Any):Unit = x match {
case "Value1"=> Function1(int)
case "Value2"=> Function2(int)
case _ => println("This is an invalid value")
}
def Function1(int) {
Do Something
}
def Function2(int) {
Do Something
}
我通过保持火花变量的声明在代码的最后解决了这个错误。
这个问题与Apache Spark有什么关系? – AKSW
没有办法'case _ => println(..)'可以匹配预期的':String'返回类型 – cchantep
@AKSW我认为我必须标记Apache Spark,并且每当我问到有关Scala的问题时。道歉,如果我错了 – JKC