Это пример реализации списка и рекурсивной функции
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.
Но этого не происходит. Даже в отладчике оно каким-то образом просто не заходит туда. Почему?
До последнего элемента включительно вызывается метод Cons.zipWith (который ты смотришь). После последнего элемента вызывается метод
Empty.zipWith.
Здравствуйте, vsb, Вы писали:
vsb>До последнего элемента включительно вызывается метод Cons.zipWith (который ты смотришь). После последнего элемента вызывается метод Empty.zipWith.
Точно, так и есть. Спасибо большое!