我有一個Person對象(person.first person.last)的數組。groovy&grails-如何去數組對象?
要了解該人是否有名字,我必須「在陣列上運行」。
我嘗試以下方法,但我得到的錯誤:
person.eachWithIndex { String persons, i ->
if(persons.first=='')
println(''error)
}
我應該如何操作對象數組?
我有一個Person對象(person.first person.last)的數組。groovy&grails-如何去數組對象?
要了解該人是否有名字,我必須「在陣列上運行」。
我嘗試以下方法,但我得到的錯誤:
person.eachWithIndex { String persons, i ->
if(persons.first=='')
println(''error)
}
我應該如何操作對象數組?
你是否在尋找類似:
class Person {
def first
def last
}
def persons = [ new Person(first:'',last:'last'), new Person(first:'john',last:'anon')]
persons.eachWithIndex { person, i ->
if(person.first==''){
println("error at person in position $i")
}
}
既然你不添加更多的細節,我不知道你在找什麼,當你說操縱對象數組所以對於一些樣本:
要操作的數組對象,您可以添加在each
本身的語句,例如爲notDefined
添加爲first
的人在那裏first==''
你可以使用:
persons.eachWithIndex { person, i ->
if(person.first==''){
person.first = 'notDefined'
println("first as notDefined for person in position $i")
}
}
爲了除去其中first ==''
可以使用removeAll
方法以除去從數組中不期望的元素中的元素:
persons.removeAll { person ->
!person.first
}
EDIT基於COMMENT:
如果要刪除null元素從您的列表中,您可以使用您在評論中使用的表達方式:
def persons = [ new Person(first:'pepe',last:'last'), null]
persons.removeAll([null])
println persons.size() // prints 1 since null element is removed
但是,似乎您並未試圖刪除空元素,而是嘗試刪除所有屬性均爲空的元素,而您的情況則是要刪除:new Person(first:null,last:null)
。要做到這一點,你可以用如下的代碼嘗試:
def persons = [ new Person(first:'pepe',last:'last'), new Person(first:null,last:null)]
persons.removeAll{ person ->
// get all Person properties wich value is not null
// without considering class propertie wich is implicit in all classes
def propsNotNull = person.properties.findAll { k,v -> v != null && k != 'class' }
// if list is empty... means that all properties are null
return propsNotNull.isEmpty()
}
println persons.size() // prints 1
希望這有助於
@ albciff-如果我有其所有屬性爲空的對象。我怎樣才能刪除它們? –
我試過invitation.removeAll([null]),但它不起作用 –
@SaritRotshild我更新了我的迴應':)' – albciff
http://docs.groovy-lang.org/latest/html/documentation/index.html#_looping_structures – cfrick