我想将现有函数分配给变量。据this网站,它是一样简单:将现有函数分配给变量
val p = scala.math.pow(_, _)
pow: (Double, Double) => Double = <function2>
但是当我尝试做同样的事情在我的代码,这是行不通的。
def main(args: Array[String]) = {
val p = scala.math.min(_, _)
val func = if (args(0).equalsIgnoreCase("min")) math.min(_,_) else math.max(_,_)
}
我认为这可能是由于使用的if
并在同一行else
条件,但价值分配变量p
时以及我得到的错误。
错误我得到:
缺少的参数类型为扩展功能((X $ 1,X $ 2)=> scala.math.min(X $ 1,X $ 2))
为什么它不适合我,我该如何解决它?
'val p = scala.math.min _' – dmitry
@dmitry为什么pow需要2个下划线,min和max只能用1来完成?即如何知道1个下划线是否足够? –
我建议在这里阅读最高票数的答案,特别是结尾部分。另外scala.math.pow _单下划线也可以。知道什么是足够的简短答案是看看它是否成功编译:) http://stackoverflow.com/questions/8000903/what-are-all-the-uses-of-an-underscore-in-scala – Tanjin