私が持っているもの
以下の関数があります(外側の関数は変更できません)
def outer(x: Int, inner: Int => Boolean): Boolean = {
inner(x)
false
}
私が欲しいもの
次のように内部関数を定義します。 if (x == 10)外部関数がtrueを返す
def inner(x: Int): Boolean = {
if (x == 10) OUTER_FUNCTION_SHOULD_RETURN_TRUE!!!
else false
}
outer(10, inner) // TRUE!!
質問
どうすればいいですか?
編集:
次のトリックを使用します。
// 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 フラグの使用を避けて、val insted を使用できますか? 私が理解しているように、varはScalaの悪いスタイルです