gpt4 book ai didi

groovy - 如何从 Groovy 中的对象获取嵌套属性值?

转载 作者:行者123 更新时间:2023-12-01 10:21:39 25 4
gpt4 key购买 nike

考虑在 Groovy 中输入 Company 的情况:

class Company {
def name
def contactPerson
}

Contact 类型的 contactPerson:

class Contact {
def firstName
def lastName
def email
}

然后我们有 Company 类的实例:

def stackOverflow = new Company(
name: "Stack Overflow",
contactPerson: new Contact(
firstName: "Joel",
lastName: "Spolsky",
email: "joel.spolsky@stackoverflow.com"
)
)

在 Groovy 中我们简单的有:

assert stackOverflow.contactPerson.firstName == "Joel"

或:

assert stackOverflow['contactPerson']['firstName'] == "Joel"

还有:

assert stackOverflow.name == "Stack Overflow"

或:

assert stackOverflow['name'] == "Stack Overflow"

甚至:

def fieldName = 'name'
assert stackOverflow.${fieldName} == "Stack Overflow"

但是假设我们有:

def nestedFieldName = 'contactPerson.firstName'

是否有 Groovy 方式来实现这样的事情:

assert stackOverflow.${nestedFieldName} == "Joel"

?

最佳答案

一种方法是减少键序列:

nestedFieldName.split('\\.')
.inject(stackOverflow) { object, property ->
object[property]
}

返回 'Joel',可用于读取任意深度的值。

关于groovy - 如何从 Groovy 中的对象获取嵌套属性值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50947612/

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