我发送一个算术运算,如:a + b到我的程序,程序内部我正在读取每个部分并设置param变量,x是我拥有的另一个常量变量和运算符。操作员将被输入args(1)然后根据我的内容我想使用另一个程序执行操作。以下是我解释的程序的一部分:
if (param != 0){
args(1) match {
case + =>val resRDD=sv.apply(sRDD, x:Float=>x + param)
case - =>val resRDD = sv.apply(sRDD, x:Float=>x - param)
case * =>val resRDD = sv.apply(sRDD, x:Float=>x * param)
case / =>val resRDD = sv.apply(sRDD, x:Float=>x / param)
case _ => "error"
}
}
我得到以下错误:
[error] ')' expected but identifier found.
[error] case * =>val resRDD = sv.apply(sRDD, x:Float=>x * param)
[error] ^
当我对这一行进行评论时,我会得到如下所示的所有操作符错误:
[error] case + =>val resRDD=sv.apply(sRDD, x:Float=>x + param)
[error] ^
[error] case + =>val resRDD=sv.apply(sRDD, x:Float=>x + param)
[error] ^
如果我使用
case "+" => //whatever
我会收到以下错误:
[error] not fount: type +
我不知道我的计划有什么问题!
谢谢!
答案 0 :(得分:3)
尝试在模式匹配中使用字符串而不是运算符:case "+" =>
例如
答案 1 :(得分:1)
你应该将lambda的参数括在括号中:
if (param != 0) {
args(1) match {
case "+" => val resRDD = sv.apply(sRDD, (x: Float) => x + param)
case "-" => val resRDD = sv.apply(sRDD, (x: Float) => x - param)
case "*" => val resRDD = sv.apply(sRDD, (x: Float) => x * param)
case "/" => val resRDD = sv.apply(sRDD, (x: Float) => x / param)
case _ => "error"
}
}
Here's the official Tour entry on the anonymous function syntax.
顺便说一句,根据Scala Style Guide,最好用2个空格而不是4个空格缩进每个级别。
我建议你阅读Programming in Scala,这是一本开始学习Scala(并进一步推进)的好书。它将涵盖有关语法,风格和最佳实践的所有基本问题 - 您会发现它很有用。
答案 2 :(得分:0)
感谢大家,我能够按照以下方式解决问题:
/test
/test1
/test2