Mic*_*ael 3 scala pattern-matching
假设我有这样的函数:
def foo(x: Int): Int = ???
def bar(xs: List[Int]): List[Int] = xs map {
case x if (x > 0) => x
case x if (foo(x) > 0) => foo(x) + 1
case _ => 0
}
Run Code Online (Sandbox Code Playgroud)
问题是foo被叫两次.你怎么写只打一次bar电话foo?
def foo(x: Int): Int = ???
def bar(xs: List[Int]): List[Int] = xs.map {
x =>
lazy val food = foo(x)
if(x > 0) x
else if (food > 0) food + 1
else 0
}
Run Code Online (Sandbox Code Playgroud)