作为下一步,我们将向Element添加显示宽度和高度的方法,展示在代码10.2中。height方法返回 contents里的行数。width方法返回第一行的长度,或如果元素没有行记录,返回零。(也就是说你不能 定义一个高度为零但宽度不为零的元素。)
abstract class Element { def contents: Array[String] def height: Int = contents.length def width: Int = if (height == 0) 0 else contents (0).length}
代码 10.2 定义无参数方法width和height
请注意Element的三个方法没一个有参数列表,甚至连个空列表都没有。例如,代之以:
def width(): Int
方法定义了不加括号的:
def width: Int
这种无参数方法在Scala里是非常普通的。相对的,带有空括号的方法定义,如def height(): Int,被 称为空括号方法:empty-paren method。推荐的惯例是在没有参数并且方法仅通过读含有对象的方式访 问可变状态(专指其不改变可变状态)时,使用无参数方法。这个惯例支持统一访问原则:uniform access principle,Meyer,面向对象软件构造【Mey00】就是说客户代码不应受通过字段还是方法实现 属性的决定的影响。例如,我们可以选择把width和height作为字段而不是方法来实现,只要简单地在每 个实现里把def修改成val即可:
abstract class Element { def contents: Array[String] val height = contents.length val width = if (height == 0) 0 else contents (0).length}
以上是小编为您精心准备的的内容,在的博客、问答、公众号、人物、课程等栏目也有的相关内容,欢迎继续使用右上角搜索按钮进行搜索参数
, 方法
, width
, 括号
, contents
, 无参数
height
scala 方法定义、scala 方法参数、oc 方法定义 多个参数、js定义带参数的方法、js自定义参数扩展方法,以便于您获取更多的相关知识。