То, что яScala: сломать внешнюю функцию от внутренней функции
У меня есть функция ниже (я не могу изменить внешней функции)
def outer(x: Int, inner: Int => Boolean): Boolean = {
inner(x)
false
}
То, что я хочу
inn э функция таким образом, что: если (х == 10) внешняя функция возвращает истинный
def inner(x: Int): Boolean = {
if (x == 10) OUTER_FUNCTION_SHOULD_RETURN_TRUE!!!
else false
}
outer(10, inner) // TRUE!!
Вопрос
Как я могу это сделать?
Edit:
Я использую следующий трюк:
// If inner return true at least once, then outerWraper return true
def outerWrapper(x: Int, inner: Int => Boolean): Boolean = {
var flag = false
def inner2(e: Int): Boolean = {
if (!flag) flag = inner(e)
inner(e)
}
outer(x, p2)
flag
}
Могу ли я избежать, используя флаг Var, но использовать Вэл Insted? Как я понимаю, var - это плохой стиль в Scala.
Насколько я знаю, вы не можете сделать что без изменения 'внешней' функции! – Shrey
Также, если это не внешнее (10, внутреннее) // TRUE !! '? – Shrey
thnks, уже правильно –