当我第一次遇到以下代码时,我感到很困惑。
在Element类中,有三个函数定义。
为什么高度和宽度可以直接将内容用作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
方法。
通常,在零参数方法调用中可以省略括号。实际上,在调用定义中没有参数列表的方法(例如contents
方法)时,必须省略括号。
请注意,此功能是Scala对uniform access principle的承诺的一部分。可以将contents
方法替换为contents
属性,而不会破坏调用方。
关于scala - 在scala中,使用函数名称作为返回值?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/12453168/