gpt4 book ai didi

function - 'f(x) { return x }' 与 'f = { x -> x }' 有何不同?

转载 作者:行者123 更新时间:2023-12-01 11:19:04 25 4
gpt4 key购买 nike

给定这个 Groovy 程序:

def f(x) { return x }

g = f

println g(42)

将程序提供给 Groovy(版本 2.4.12)解释器时,会打印一条错误消息:

groovy.lang.MissingPropertyException: No such property: f for class: x at x.run(x.groovy:3)

但是,将程序改为

def f = { x -> x }

g = f

println g(42)

使解释器按预期打印“42”。

为什么 f 的这两个定义被区别对待?有没有办法调整 g 的定义,使以前的版本运行(可能使用 &. 运算符)?

最佳答案

与:

def f(x) { return x }

您定义了一个不是对象的方法,而使用:

def f = { x -> x }

你定义了一个闭包,它是 groovy 中的一个对象。

这些不是等同的存在。见here .

您确实可以使用 & 运算符(方法转换为闭包):

def f(x) { return x }

def g = this.&f

println g(42)

关于function - 'f(x) { return x }' 与 'f = { x -> x }' 有何不同?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46338531/

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