gpt4 book ai didi

scala - 在scala中,使用函数名作为返回值?

转载 作者:行者123 更新时间:2023-12-04 18:37:48 25 4
gpt4 key购买 nike

当我第一次看到下面这段代码时,我感到很困惑。

在Element类中,定义了三个函数。

为什么height和width可以直接用contents作为Array[String]的变量?

是因为 Scala 中的每个函数都是对象还是其他规则?

我来自 C++ 世界,所以这个定义真的让我很困惑。

abstract class Element {
def contents: Array[String]
def height: Int = contents.length
def width: Int = if (height == 0) 0 else contents(0).length
}

最佳答案

这只是语法。例如,表达式 contents.length 被编译为对 contents 方法的调用,然后对结果调用 length 方法.

一般来说,在零参数方法调用中可以省略括号。事实上,在调用定义中没有参数列表的方法时,必须省略括号。

请注意,此功能是 Scala 对 uniform access principle promise 的一部分。 . contents 方法可以替换为 contents 属性,而不会中断调用者。

关于scala - 在scala中,使用函数名作为返回值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12453168/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com