Scala中的无参数方法
先决条件 - Scala |职能
无参数方法是不带参数的函数,由没有任何空括号定义。无参数函数的调用应该在没有括号的情况下完成。这使得def到val的更改无需更改客户端代码,这是统一访问原则的一部分。
例子:
// Scala program to illustrate
// Parameterless method invocation
class GeeksforGeeks(name: String, ar: Int)
{
// A parameterless method
def author = println(name)
def article = println(ar)
// An empty-parenthesis method
def printInformation() =
{
println("User -> " + name + ", Articles -> " + ar)
}
}
// Creating object
object Main
{
// Main method
def main(args: Array[String])
{
// Creating object of Class 'Geeksforgeeks'
val GFG = new GeeksforGeeks("John", 50)
GFG.author // calling method without parenthesis
}
}
输出:
John
使用无参数方法通常有两种约定。一种是没有任何参数时。第二个是方法不改变可变状态时。必须通过定义具有括号副作用的方法来避免调用看起来像字段选择的无参数方法。
使用括号调用无参数方法的示例给出编译错误。
例子:
// Scala program to illustrate
// Parameterless method invocation
class GeeksforGeeks(name: String, ar: Int)
{
// A parameterless method
def author = println(name)
def article = println(ar)
// An empty-parenthesis method
def printInformation() =
{
println("User -> " + name + ", Articles -> " + ar)
}
}
// Creating object
object Main
{
// Main method
def main(args: Array[String])
{
// Creating object of Class 'Geeksforgeeks'
val GFG = new GeeksforGeeks("John", 50)
GFG.author() //calling method without parenthesis
}
}
输出:
prog.scala:23: error: Unit does not take parameters
GFG.author() //calling method without parenthesis
^
one error found
注意:空括号方法可以在不带括号的情况下调用,但始终建议并接受作为约定调用带括号的空括号方法。