我想用部分应用的方法定义类的方法。如果没有完全应用该方法,这可能吗?
这是我最好的镜头:
def getFile1(arg1: String) (implicit execution: ExecutionContextExecutor): Future[File] =
getFile("file 1")_
def getFile2(arg1: String) (implicit execution: ExecutionContextExecutor): Future[File] =
getFile("file 2")_
def getFile(fileName: String)(arg1: String)(implicit execution: ExecutionContextExecutor): Future[File] = //...
虽然不是使getFile1(arg1)
和getFile('file 1', arg1)
等效,但Scala会尝试评估getFile("File 2")_
并发现错误,因为getFile("File 2")_
的类型是函数,而不是文件。
答案 0 :(得分:3)
错误是正确的。 getFile("..")_
是方法内部的表达式(评估为部分函数),而不是&#39;方法定义&#39;。< / p>
如下所示将其写出来应该更清楚:
def getFile2(arg1: String) (implicit execution: ExecutionContextExecutor): Future[File] = {
return getFile("file 2")_
}
与getFile("file 2")(arg1)
对比,html, body{
margin: 0;
padding: 0;
}
.fixed-top{
height: 50px;
background-color: #5cb85c;
}
.fluid-center{
height: calc(100vh - 150px);/*using viewport units*/
background-color: indianred;
overflow: auto;
}
.fixed-bottom{
height: 100px;
background-color: #269abc;
}
具有Future [File]的预期表达类型/结果。
如果希望方法返回部分应用的函数,则将返回类型从Future [File]更改为适当的值。 (或者让类型推断做它将会做的事情。)