f: => R
和f: () => R
有什么区别?
它们似乎以相同的方式工作,但是它们的类型彼此不兼容。
答案 0 :(得分:1)
这是完全不同的事情:f: => R
-这是一种函数参数(非常具体-请参见this discussion),f: () => R
-这是一个简单的功能。
它们似乎以相同的方式工作-因为它们确实以相同的方式工作-每次您调用它们时都进行计算。按名称调用参数的优点是,如果未在函数主体中使用它们,则不对它们进行评估(并且它们是在函数中使用它们时计算的,而不是在声明或调用它们时进行计算-仅在评估该部分时才计算)使用此特定参数的功能)。另请参见this (official description from scala-lang.org)