懒函数参数?

时间:2014-10-04 15:59:52

标签: scala

如何制作" areYouLazy"功能评估"字符串"只有一次最好的方式?

def areYouLazy(string: => String) = {
    string
    string
  }

areYouLazy {
  println("Generating a string")
  "string"
} 

1 个答案:

答案 0 :(得分:7)

每次访问时都会执行

按名称调用参数。

为避免多次执行,您只需使用仅在第一次访问时执行的lazy缓存值:

def areYouLazy(string: => String) = {
  lazy val cache = string
  cache  // executed
  cache  // simply access the stored value
}