在Scala中定义无参数方法

作为下一步,我们将向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自定义参数扩展方法,以便于您获取更多的相关知识。

时间: 2024-08-31 14:08:00

在Scala中定义无参数方法的相关文章

创建AddingMachine类,定义无参数方法Add和Subtract,分别实现两整型数的加、减

问题描述 创建AddingMachine类,定义无参数方法Add和Subtract,分别实现两整型数的加.减 解决方案 解决方案二:楼主想干什么,没看明白

继承-在jsp中,在父对象中定义了参数和使用这个参数的方法,如何在子对象中初始化这个参数?

问题描述 在jsp中,在父对象中定义了参数和使用这个参数的方法,如何在子对象中初始化这个参数? 如题,如何在子对象中初始化这个参数,使得可以调用子对象继承下来的使用这个参数的方法?譬如:父对象ServiceImpl中:定义参数String hql=null;定义方法void list(){ dao.list(hql); } 子对象UserServiceImpl中:hql=""from User"";然后可以调用方法list() 解决方案 http://bbs.csd

javascript中定义类的方法详解

 这篇文章主要详细介绍了javascript中定义类的方法的相关资料,需要的朋友可以参考下     JS中定义类的方式有很多种: 1.工厂方式   代码如下: function Car(){ var ocar = new Object; ocar.color = "blue"; ocar.doors = 4; ocar.showColor = function(){ document.write(this.color) }; return ocar; } var car1 = Car(

没有为该对象定义无参数的构造函数 错误求教

问题描述 $.ajax执行这action的时候直接报错跟踪不到错误publicJsonResultDoAction(JObjectrequest){varmessage=newsys_userService().Login(request);returnJson(message,JsonRequestBehavior.DenyGet);}昨天错误没有写全实在抱歉新手轻虐"/"应用程序中的服务器错误.没有为该对象定义无参数的构造函数.说明:执行当前Web请求期间,出现未经处理的异常.请检

jsp中定义和使用方法示例介绍_JSP编程

在jsp中,如果需要处理复杂数据时,在上方定义一个java方法是很有效的解决方案,把处理数据的责任推给该方法,然后该jsp页面的主流程就不受影响.当然也可以使用js定义方法来处理,js似乎更善于定义这样的方法来处理前台数据,但有时候jsp和js之间倒腾数据时会出乱码或者报一些找不到对象的错误,因此他们之间的互相传值还是越少越好. 看一看jsp中定义一个字符串处理的方法: 复制代码 代码如下: <%! String splitString(String str, int a) { if (str

JSP取得在WEB.XML中定义的参数

js|web|xml 在WEB.XML文件中设置参数: <?xml version="1.0" encoding="ISO-8859-1"?> <!DOCTYPE web-app PUBLIC "-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN" "http://java.sun.com/dtd/web-app_2_3.dtd"> <we

javascriptserializer-JavaScriptSerializer“ 没有为类型“System.String”定义无参数的构造函数”

问题描述 JavaScriptSerializer" 没有为类型"System.String"定义无参数的构造函数" JavaScriptSerializer c# 反序列化的时候报错" 没有为类型"System.String"定义无参数的构造函数 using System; using System.Collections.Generic; using System.Linq; using System.Text; using Sys

《R语言数据挖掘:实用项目解析》——2.9 无参数方法

2.9 无参数方法 当一个训练数据集不满足任何假定的某种概率分布时,唯一的选择就是通过无参数方法分析数据集.无参数方法不服从概率分布假设.使用无参数方法,我们可以不基于概率分布的前提假设来实施推断和假设检验.现在我们来看当一个数据集不满足任何概率分布前提假设时,可使用的一系列无参数检验. 2.9.1 Wilcoxon符号秩检验 如果正态性假设不成立,就需要利用无参数方法来回答这个问题--自动挡和手动挡汽车的市内平均行车里程数是否有差别? 若两个样本恰好成对而又不满足正态性假设,则可使用参数pai

JSP取得在WEB.XML中定义的参数_XML/RSS

在WEB.XML文件中设置参数: <?xml version="1.0" encoding="ISO-8859-1"?> <!DOCTYPE web-app PUBLIC "-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN" "http://java.sun.com/dtd/web-app_2_3.dtd"> <web-app>