как вытащить последний элемент из списка в Scala
дан список
val list = 1 :: (2 :: (3 :: Nil)) ;
как с помощью функции вытащить последний элемент?
Ответы (1 шт):
list.last
вернёт последний элемент списка
ТС: а как тогда вернуть предпоследний элемент?
list(list.size - 2)
вернёт предпоследний элемент.
В скобочках обращение к конкретному элементу, в данном случае размер списка - 2
Можно вынести в отдельную функцию, где обработать на возможность ошибок.
Например, возвращать Option, если вдруг захочется получить -1ый элемент списка.
Не знаю насколько корректно, но можно ещё поиграться с методом take
list.take(2).last //вернёт 2 из list(1, 2, 3)
output:
> 2
Так даже если возьмёшь лишние элементы, ошибки не возникнет
ТС:
нашел вот такую функцию:
def penultimateBuiltin[A](ls: List[A]): A = if (ls.isEmpty) throw new NoSuchElementException else ls.init.last
но где тогда вписывать сам массив, которую она принимает?
метод init возвращает список со всеми элементами, кроме последнего.
Поэтому, вызов на нём last вернёт предпоследний элемент.
Такой подход тоже имеет место быть, но если нужно будет добираться до пред-предпоследнего, то цепочка будет расти.
Проще обращаться по индексу, то есть через скобки.
Рекомендую прочитать доку по спискам, в Скала для них много полезных методов уже имеется из под коробки:
https://scala-lang.org/api/2.13.3/scala/collection/immutable/List.html