Scala中的无参数方法

Scala无参数方法

一种不从调用代码接受任何参数的方法。它还表示不会有任何空括号。这些是Scala中特殊的方法类型,这些方法特别进行了初始化和调用。要初始化无参数方法,您需要使用带def关键字的名称,但不带“()”括号。在调用该方法时,我们也将避免使用 “()”括号。

语法:

    def method_name = code_to_be_executed

说明无参数方法的程序

class calculator(a: Int, b: Int) 
{ 
	def add = println("a+b = " + (a+b)) 
	def subtract = println("a-b = " + (a-b)) 
	def product = println("a*b = "+ (a*b) )
	def division = println("a/b = " + (a/b))
	 
} 
object Main 
{ 
	def main(args: Array[String]) 
	{ 
		val calc = new calculator(1250, 50) 
		println("value of a = 1250 and b =  50")
		calc.add
		calc.subtract
		calc.product
		calc.division
	} 
}

输出结果

value of a = 1250 and b =  50
a+b = 1300
a-b = 1200
a*b = 62500
a/b = 25

说明:

此代码初始化一个计算器并在其中定义4个无参数的方法。这些方法用于加,减,乘和除值。这些方法直接打印计算值,不接受任何参数。将使用值125050创建类计算器的对象calc。然后,使用该calc对象,我们将调用执行操作并返回输出的所有四个方法。

参方法在不带()括号的情况下调用。如果我们使用括号调用无参数方法,则会出现错误。

如果程序员错误地在函数调用的末尾加上了括号,则编译器将报告错误,指出:“单元不带参数”。

程序在使用括号调用无参数方法时显示错误

class calculator(a: Int, b: Int) 
{ 
	def division = println("a/b = " + (a/b))
	 
} 
object Main 
{ 
	def main(args: Array[String]) 
	{ 
		val calc = new calculator(1250, 50) 
		println("value of a = 1250 and b =  50")
		calc.division()
	} 
}

输出结果

/home/jdoodle.scala:12: error: Unit does not take parameters
		calc.division()
                             ^
one error found

说明:

此代码与以前的代码具有相同的逻辑。区别只是在调用除法无参数方法时使用了括号。因此,编译器将给出错误:“单元不带参数”。

无参数方法与方法无参数

Scala在其方法中支持多种类型的参数传递。

但是这两种方法看起来很相似,但是功能不同。无参数方法在其调用中不接受参数并对其进行排序。但是没有参数的方法在其调用中接受void参数(不能将任何内容视为参数)。