是否可以获得部分应用函数的名称?

时间:2011-03-21 15:02:36

标签: scala partial-application

假设我已经定义了一个函数:

def hello(name:String, words:String) = println("Hello!" + name + words)

然后我定义了一个部分功能:

def p = hello _

打印p,显示:

(String, String) => Unit = <function2>

没有显示功能名称。是否可以从部分函数hello中获取原始方法名称p

3 个答案:

答案 0 :(得分:4)

thisMethod一样,基本上用于this为类实例做的方法。

我有兴趣看看它如何与函数交互(这是与方法不同的概念)。您的p是通过部分应用hello方法创建的匿名函数(同样,您需要在此处小心,“部分应用函数是一个非常不同的函数PartialFunction)。然后在这个函数对象上调用的实际方法是apply,并且在这种情况下thisMethod如何表现有几种可能性。

无论发生什么,p只是一个对象参考,不要指望永远能够将其作为名称进行访问。

答案 1 :(得分:3)

没有

它是我喜欢的一个功能,但它有严重的概念问题,例如,当同一个函数被赋予两个名字时会发生什么......它应该仍然是相同的功能,不应该吗? / p>

更新以回应评论:

def p =你好_    def q = p

q的名字是什么? P +还是你好?还是打印?我很难想象一个简单,一致和有用的解决方案。

答案 2 :(得分:2)

...这实际上是一个“部分应用的函数”,它是通过在没有应用参数的情况下调用hello函数匿名创建的。它没有要显示的明确名称。