scala - 在 Scala 中创建递归值
问题描述
我得到了以下代表递归值的 Scala 代码:
class Cons(elem: Int, next: => Cons)
val x = new Cons(1, x)
我得到了这个例子,但我试图了解细节。特别是,符号 => Cons
有什么作用?它不给我任何论据(单位),我会给你一个缺点吗?
解决方案
几乎,它是一个by-name
参数:
每次使用时都会评估按名称参数。如果它们未使用,则根本不会对其进行评估。这类似于用传递的表达式替换按名称参数。它们与按值参数相反。要创建一个名为 by-name 的参数,只需在其类型前面加上 =>。
它的行为就像一个函数(它实际上在幕后),但您不需要函数应用程序()
来读取它。每次使用参数时,都会重新计算对其求值的块。
你可以在这里阅读。
推荐阅读
- swift - 删除 NSCollectionView 中的部分和标题(粘性标题流布局)
- php - API 平台 - 序列化组无法正常工作
- flutter - 如何单独链接 Flutter StaggeredGridView 项目?
- python - python中的正则化超几何函数3F2
- c - 使用 Amazon FreeRTOS 旧版本构建演示应用程序
- python - CURL 命令的 Python 等效项
- android - Android Room SQLITE 使用 MVVM 更新自定义查询
- powershell - 我无法在 vscode 中启动我的终端
- r - R / ggplot2:不能用日期改变比例限制
- python - 使用 click 创建复杂的命令行界面