首页 > 解决方案 > 在 Scala 中创建递归值

问题描述

我得到了以下代表递归值的 Scala 代码:

class Cons(elem: Int, next: => Cons)
val x = new Cons(1, x)

我得到了这个例子,但我试图了解细节。特别是,符号 => Cons有什么作用?它不给我任何论据(单位),我会给你一个缺点吗?

标签: scala

解决方案


几乎,它是一个by-name参数:

每次使用时都会评估按名称参数。如果它们未使用,则根本不会对其进行评估。这类似于用传递的表达式替换按名称参数。它们与按值参数相反。要创建一个名为 by-name 的参数,只需在其类型前面加上 =>。

它的行为就像一个函数(它实际上在幕后),但您不需要函数应用程序()来读取它。每次使用参数时,都会重新计算对其求值的块。

你可以在这里阅读。


推荐阅读