Подтвердить что ты не робот

В Groovy. Есть ли способ безопасно индексировать в коллекцию, аналогичную безопасному оператору навигации?

Это безопасно будет возвращать значение null без исключения каких-либо исключений

obj?.prop1?.prop2

Как это сделать для коллекций, где он не будет вызывать исключение из-за пределов?

myarray[400]  //how do I make it return null if myarray.size() < 400 

Есть ли такой оператор для коллекций?

4b9b3361

Ответ 1

Это поведение по умолчанию со всеми коллекциями, кроме массивов в groovy.

assert [1,2,3,4][5] == null
def test = new ArrayList()
assert test[100] == null
assert [1:"one", 2:"two"][3] == null

Если у вас есть массив, включите его в список.

def realArray = new Object[4]
realArray[100] // throws exception
(realArray as List)[100] // null

Вы можете индексировать список и индексы карт вместе с оператором ? так же, как со свойствами:

def myList = [[name: 'foo'], [name: 'bar']]
assert myList[0]?.name == 'foo'
assert myList[1]?.name == 'bar'
assert myList[2]?.name == null