假设我已经定义了一个函数:
def hello(name:String, words:String) = println("Hello!" + name + words)
然后我定义了一个部分功能:
def p = hello _
打印p,显示:
(String, String) => Unit = <function2>
没有显示功能名称。是否可以从部分函数hello
中获取原始方法名称p
?
答案 0 :(得分:4)
像thisMethod
一样,基本上用于this
为类实例做的方法。
我有兴趣看看它如何与函数交互(这是与方法不同的概念)。您的p
是通过部分应用hello
方法创建的匿名函数(同样,您需要在此处小心,“部分应用函数是一个非常不同的函数PartialFunction
)。然后在这个函数对象上调用的实际方法是apply
,并且在这种情况下thisMethod
如何表现有几种可能性。
无论发生什么,p
只是一个对象参考,不要指望永远能够将其作为名称进行访问。
答案 1 :(得分:3)
没有
它是我喜欢的一个功能,但它有严重的概念问题,例如,当同一个函数被赋予两个名字时会发生什么......它应该仍然是相同的功能,不应该吗? / p>
更新以回应评论:
def p =你好_ def q = p
q的名字是什么? P +还是你好?还是打印?我很难想象一个简单,一致和有用的解决方案。
答案 2 :(得分:2)
...这实际上是一个“部分应用的函数”,它是通过在没有应用参数的情况下调用hello函数匿名创建的。它没有要显示的明确名称。