Не уверен, что этот конкретный случай был рассмотрен ранее, поэтому здесь.
У меня есть хвостовая рекурсивная функция высшего порядка, которая более или менее делает то, что мне нужно. Он принимает функцию в качестве одного из аргументов.
В настоящее время, если функция возвращает влево, моя рекурсивная функция продолжит итерацию.
Итак, я борюсь с тем, как написать это так, чтобы, если моя функция вернула налево, рекурсивная функция перестала выполнять итерации.
def recusriveFunc[T](data: List[T])(acc: Acc)(f : (Acc, T) => Acc): Acc = {
@tailrec
def inner(acc: Acc, remaining: List[T]): Acc = {
if (remaining.isEmpty)
acc
else {
val newAcc: Acc = f(acc, remaining.head)
inner(newAcc, remaining.tail)
}
}
inner(acc, data)
}