gpt4 book ai didi

Scala - 获取函数名称

转载 作者:行者123 更新时间:2023-12-04 00:50:56 24 4
gpt4 key购买 nike

我有一个函数foo它将另一个函数(例如 bar )作为参数。有没有办法得到bar的函数名作为 foo 中的字符串?

最佳答案

没有。见 difference between methods and functions .方法不会作为参数传递 - 它们在传递给其他方法/函数时会扩展为函数对象。这些函数对象是匿名的、编译器生成的类的实例,并且没有名称(或者,至少,作为匿名类,有一些您可以使用反射访问的名称,但可能不需要)。

所以,当你这样做时:

def foo() {}

def bar(f: () => Unit) {}

bar(foo)

最后一次通话中实际发生的情况是:
bar(() => foo())

不过,理论上,您可以找到所传递的函数对象正在包装的方法的名称。您可以进行字节码自省(introspection)来分析 apply 的正文函数对象的方法 f在方法 bar上面,并根据该方法的名称得出结论。然而,这既是一个近似值,也是一种矫枉过正。

关于Scala - 获取函数名称,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7671140/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com