Scala 如何使用部分应用的函数定义类方法?

Scala 如何使用部分应用的函数定义类方法?,scala,Scala,我想用一个部分应用的方法定义一个类的方法。在不完全应用该方法的情况下,是否可以这样做 这是我最好的照片: def getFile1(arg1: String) (implicit execution: ExecutionContextExecutor): Future[File] = getFile("file 1")_ def getFile2(arg1: String) (implicit execution: ExecutionContextExecutor): Future[Fil

我想用一个部分应用的方法定义一个类的方法。在不完全应用该方法的情况下,是否可以这样做

这是我最好的照片:

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] = //...

然而,发生的情况是,Scala没有将
getFile1(arg1)
getFile('file 1',arg1)
等效,而是尝试计算
getFile(“file 2”)\uuu
并看到一个错误,因为
getFile(“file 2”)的类型是一个函数,而不是一个文件。

错误是正确的。
getFile(“…”)\uuu
是方法内部的一个表达式(其计算结果为部分函数),它不是“方法定义”

将其写出来,如下所示,应该可以更清楚地说明这一点:

def getFile2(arg1: String) (implicit execution: ExecutionContextExecutor): Future[File] = {
  return getFile("file 2")_
}
getFile(“文件2”)(arg1)
形成对比,后者的预期表达式类型/结果为Future[file]


如果希望该方法返回部分应用的函数,则将返回类型从Future[File]更改为任何适当的类型。(或者让类型推断执行它将要执行的操作。)

错误是正确的。
getFile(“…”)\uuu
是方法内部的一个表达式(其计算结果为部分函数),它不是“方法定义”

将其写出来,如下所示,应该可以更清楚地说明这一点:

def getFile2(arg1: String) (implicit execution: ExecutionContextExecutor): Future[File] = {
  return getFile("file 2")_
}
getFile(“文件2”)(arg1)
形成对比,后者的预期表达式类型/结果为Future[file]


如果希望该方法返回部分应用的函数,则将返回类型从Future[File]更改为任何适当的类型。(或者让类型推断执行它将要执行的操作。)

错误是正确的。
getFile(“…”)\uuu
是方法内部的一个表达式(其计算结果为部分函数),它不是“方法定义”

将其写出来,如下所示,应该可以更清楚地说明这一点:

def getFile2(arg1: String) (implicit execution: ExecutionContextExecutor): Future[File] = {
  return getFile("file 2")_
}
getFile(“文件2”)(arg1)
形成对比,后者的预期表达式类型/结果为Future[file]


如果希望该方法返回部分应用的函数,则将返回类型从Future[File]更改为任何适当的类型。(或者让类型推断执行它将要执行的操作。)

错误是正确的。
getFile(“…”)\uuu
是方法内部的一个表达式(其计算结果为部分函数),它不是“方法定义”

将其写出来,如下所示,应该可以更清楚地说明这一点:

def getFile2(arg1: String) (implicit execution: ExecutionContextExecutor): Future[File] = {
  return getFile("file 2")_
}
getFile(“文件2”)(arg1)
形成对比,后者的预期表达式类型/结果为Future[file]


如果希望该方法返回部分应用的函数,则将返回类型从Future[File]更改为任何适当的类型。(或者让类型推断执行它将要执行的操作。)

我知道这就是正在发生的事情。我想问的是,是否有办法解决这个问题。是(或否,取决于视图):根据实际签名返回正确的类型或更改签名。没有这样的“元别名”功能。即使创建一个
val
(在这种情况下隐式将无法工作),它仍然需要按照分部方法正确键入。我知道这就是正在发生的事情。我想问的是,是否有办法解决这个问题。是(或否,取决于视图):根据实际签名返回正确的类型或更改签名。没有这样的“元别名”功能。即使创建一个
val
(在这种情况下隐式将无法工作),它仍然需要按照分部方法正确键入。我知道这就是正在发生的事情。我想问的是,是否有办法解决这个问题。是(或否,取决于视图):根据实际签名返回正确的类型或更改签名。没有这样的“元别名”功能。即使创建一个
val
(在这种情况下隐式将无法工作),它仍然需要按照分部方法正确键入。我知道这就是正在发生的事情。我想问的是,是否有办法解决这个问题。是(或否,取决于视图):根据实际签名返回正确的类型或更改签名。没有这样的“元别名”功能。即使创建一个
val
(在这种情况下,隐式将不起作用),它仍然需要按照分部方法正确键入。