Общий вопрос заключается в том, как вернуть дополнительную информацию из методов, помимо фактического результата вычисления. Но я хочу, чтобы эту информацию можно было молча игнорировать.
Возьмем, например, метод dropWhile
на Iterator
. Возвращаемым результатом является мутировавший итератор. Но, возможно, иногда меня может заинтересовать количество удаленных элементов.
В случае dropWhile
эта информация может быть сгенерирована извне путем добавления индекса к итератору и вычисления количества удаленных шагов после этого. Но в целом это невозможно.
Простое решение - вернуть кортеж с фактическим результатом и дополнительной информацией. Но тогда мне нужно обрабатывать кортеж, когда я вызываю метод, даже если меня не интересует дополнительная информация.
Итак, вопрос в том, есть ли какой-нибудь умный способ сбора такой дополнительной информации?
Может быть через параметры Option[X => Unit]
с функциями обратного вызова, которые по умолчанию равны None
? Есть ли что-то более умное?