[Scala] в примере по ссылке всё работает, как хотел автор, но почему?
От: xnoname  
Дата: 15.11.21 15:48
Оценка:
Это пример реализации списка и рекурсивной функции zipWith(), среди прочих:
https://github.com/rockthejvm/udemy-scala-beginners/blob/master/src/main/scala/exercises/MyList.scala#L131
h — голова списка,
t — хвост,
то есть обычный скаловский список head::tail, рассчитанный на применение рекурсии.

Метод zipWith() отрабатывает, как задумывал автор. Но почему? Ведь на последнем рекурсивном вызове с пустым хвостом списка должна сработать проверка if (list.isEmpty) и выкинуться RuntimeException.

Но этого не происходит. Даже в отладчике оно каким-то образом просто не заходит туда. Почему?
scala рекурсия
Re: [Scala] в примере по ссылке всё работает, как хотел авто
От: vsb Казахстан  
Дата: 15.11.21 15:55
Оценка: 3 (1)
До последнего элемента включительно вызывается метод Cons.zipWith (который ты смотришь). После последнего элемента вызывается метод Empty.zipWith.
Отредактировано 15.11.2021 15:55 vsb . Предыдущая версия .
Re[2]: [Scala] в примере по ссылке всё работает, как хотел авто
От: xnoname  
Дата: 15.11.21 16:20
Оценка:
Здравствуйте, vsb, Вы писали:

vsb>До последнего элемента включительно вызывается метод Cons.zipWith (который ты смотришь). После последнего элемента вызывается метод Empty.zipWith.


Точно, так и есть. Спасибо большое!
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.