scala - Scala中“按名称调用”和Function0之间的区别
问题描述
f: => R
和 和有什么区别f: () => R
?它们似乎以相同的方式工作,但它们的类型彼此不兼容。
解决方案
这是完全不同的东西:f: => R
- 它是一种函数参数(非常具体 - 请参阅此讨论),f: () => R
- 它是一个简单的函数。它们似乎以相同的方式工作 - 因为它们实际上以相同的方式工作 - 他们每次调用它们时都会计算。按名称调用参数的优点是,如果它们未在函数体中使用,则不会对其进行评估(并且当您在函数中使用它们时计算它们,而不是在您声明它们或调用它们时 - 仅在评估该部分时使用此特定参数的功能)。另请参阅(来自 scala-lang.org 的官方描述)
推荐阅读
- javascript - 绑定事件监听器并保持元素为 this
- java - 如何在控制器层测试特定条件?
- c - getchar() function to count characters in C
- c# - 如何通过 NSubstitute 监视方法返回值
- python-3.x - 将字典/列表拆分为单独的列
- ruby-on-rails - Rails form_for 助手认证参数?
- react-native - 如何在 React Native 上实现 Background Fetch | 世博会?
- react-native - 无法从 react-native 中的 navigation.geolocation.getCurrentPosition() 返回位置
- python - 在 tkinter 中以定义大小的标签显示整个图像
- javascript - 参数未通过 Vuejs 上的路由器链接传递