gpt4 book ai didi

Java模仿一等函数

转载 作者:行者123 更新时间:2023-12-01 23:32:42 25 4
gpt4 key购买 nike

在Java中,有没有办法模拟lua和python中的一流函数,比如这里?

def foo():
print "foo called"
bar = foo
bar() #output from this line is "foo called"

或者是在每种情况下使用不同方法的 switch 语句的唯一方法吗?

编辑:谢谢您的澄清,我的意思是问是否有一种方法可以创建对函数的引用,并像函数一样调用它。

此外,目标不是调用某个函数的某个实现,而是选择调用哪个函数,而哪个函数的选择可以完全不同。我想这样做的原因是拥有一个更通用的类,无需进行编辑即可添加功能。有点像将函数放入集合或列表中。

Edit2:对于任何为了寻找答案而查看此问题的人:这与堆栈和堆有关。 Java 无法做到这一点,因为它的方法存储在堆栈上,堆栈比堆严格得多。然而,Python 将其函数存储在堆上,并在堆栈上对它们进行引用。由于Python中的函数是通过引用调用的,因此您可以更改对它们的引用并根据需要使用。

最佳答案

问题中的代码没有演示按引用传递行为。事实上,Java 和 Python 都没有引用传递语义,都是值传递。

您所演示的是一阶函数:将函数视为任何其他值的能力。在 Java 7 及更早版本中,这是不可能的,尽管在 Java 8 中引入了匿名函数的新语法(称为 lambda)。 lambda 语法可用于模仿所示的行为。

关于Java模仿一等函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19102050/

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