如何在Groovy中从对象字段提取新列表
在Groovy中,如何从以下内容中提取新列表:如何在Groovy中从对象字段提取新列表,groovy,Groovy,在Groovy中,如何从以下内容中提取新列表: def people = [ new Person(name:"Tom", yearOfBirth:1985), new Person(name:"Abigail", yearOfBirth:1987), new Person(name:"Joyce", yearOfBirth:1984), new Person(name:"James", yearOf
def people = [
new Person(name:"Tom", yearOfBirth:1985),
new Person(name:"Abigail", yearOfBirth:1987),
new Person(name:"Joyce", yearOfBirth:1984),
new Person(name:"James", yearOfBirth:1987),
new Person(name:"Scott", yearOfBirth:1985),
new Person(name:"Ruth", yearOfBirth:1984)
]
class Person {
String name
int yearOfBirth
}
因此,新列表如下所示:
["Tom", "Abigail", "Joyce", "James", "Scott", "Ruth"]
你可以做:
def names = people.name
很好,在这个过程中,我如何用“Tim”替换“Tom”呢?你需要像
people.collect{it.name='Tom'?'Tim':it.name}
@Tim_-yates这样的东西,而不是def-names=people*.name
?我个人更喜欢后者。(顺便说一句,我觉得很有趣,雷默斯想用你代替汤姆)@epidemian他们最终都是一样的,假设人们是一个列表。。。查看我的代码时,我使用了这两种方法:-/I like*。
因为它表达了您所做的更多,但是
的输入更少;-)幸好我们替换了汤姆,他没有发挥他的作用;-)@tim_yates,在这个例子中,我觉得两种语法都可以,因为这是一个非常简单的例子。但总的来说,我更喜欢*.prop
,因为我觉得它的意思更明显;它的意思总是.collect{it.prop}
。people.name
选项依赖于people
对象(一个propertyMissing
实现,它没有name
属性)上的一点魔力,我最好不要每次看到这个表达式时都记住它:)