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

Получить первый элемент списка идиоматически в Groovy

Пусть код говорит первым

def bars = foo.listBars()
def firstBar = bars ? bars.first() : null
def firstBarBetter = foo.listBars()?.getAt(0)

Есть ли более элегантный или идиоматический способ получить первый элемент списка, или null, если это невозможно? (Я бы не рассматривал блок try-catch, элегантный здесь.)

4b9b3361

Ответ 1

Не уверен, что использование find является самым изящным или идиоматичным, но оно кратким и не бросает исключение IndexOutOfBoundsException.

def foo 

foo = ['bar', 'baz']
assert "bar" == foo?.find { true }

foo = []
assert null == foo?.find { true }

foo = null
assert null == foo?.find { true }

Ответ 2

Вы также можете сделать

foo[0]

Это вызовет исключение NullPointerException, когда foo имеет значение NULL, но оно вернет нулевое значение в пустом списке, в отличие от foo.first(), которое будет генерировать исключение на пустом.