gpt4 book ai didi

groovy - 使用 [] 访问 groovy 中的对象属性

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

假设我在 groovy 中有以下代码:

class Human {
Face face
}
class Face {
int eyes = 2
}
def human = new Human(face:new Face())

我要访问 eyes属性使用 [] :
def humanProperty = 'face.eyes'
def value = human[humanProperty]

但这并不像我预期的那样工作(因为它试图访问 Human 对象上名为“face.eyes”的属性,而不是 human.face 属性上的 eyes 属性)。

有没有另一种方法可以做到这一点?

最佳答案

您需要评估字符串才能获得所需的属性。为此,您可以执行以下任一操作:

humanProperty.split( /\./ ).inject( human ) { obj, prop -> obj?."$prop" }

(将 humanProperty 拆分为属性名称列表,然后,从 human 对象开始,依次调用每个属性,将结果传递给下一次迭代。

或者,您可以使用 Eval 类执行以下操作:
Eval.x( human, "x.${humanProperty}" )

使用 []符号,你需要这样做:
human[ 'face' ][ 'eyes' ]

关于groovy - 使用 [] 访问 groovy 中的对象属性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4077168/

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