Scala 方法调用
方法调用是一种展示不同语法的技术,在这种技术中,我们用一个对象动态地调用一个类的方法。
Scala的命名规则与Java相同,即:-
- 调用对象/目标和点(.)之间不能有任何空格,点和方法名之间也不能有空格。
obj.display(“name”) // 正确
obj.display(“name”) // 不正确但合法
obj. display(“name”) // 不正确但合法
- 方法名称和括号之间也不应该有任何空格。
println(“student”) // 正确
println (“student”) // 不正确但合法
- 参数应该用一个空格和一个逗号隔开。
obj.display(“name”, 22) // 正确
obj.display(“name”, 22) // 不正确但合法
obj. display(“name”, 22) // 不正确但合法
让我们看看具有不同参数和风格的方法。
Arity-0 : 当有0个参数要传递给方法时。因此,在方法上添加小括号并不是强制性的。它将提高代码的可读性,省略小括号将在一定程度上减少字符的数量。
obj.display() //correct
obj.display //correct
Arity-1 : 当只有一个参数被传递给arity-1的方法时。这条规则应该用于纯函数式编程或以函数为参数的方法,那么就可以避免在传递参数周围使用小括号。这种类型的语法也被称为 infix符号
示例
// Scala program for arity 1
// Creating object
class x
{
// Defining method
def display(str: String)=
{
println(str)
}
}
// Creating object
object GfG
{
// Main method
def main(args: Array[String])
{
val obj = new x
obj.display("student") // correct
obj display ("student") // correct
obj display "student" // correct
}
}
输出
student
student
student
高阶函数: 如果一个函数包含其他函数作为参数或返回一个函数作为输出,即与其他函数一起操作的函数被称为高阶函数,则该函数被称为高阶函数。值得一提的是,高阶函数也适用于以函数为参数或以函数为结果返回的函数和方法。这是可行的,因为Scala的编译器允许将方法强制变成函数。
例子
// Scala program of higher order
// function
// Creating object
object GfG
{
// Main method
def main(args: Array[String])
{
// Creating a Set of strings
val names = Set("sunil","akhil","rakhi")
// Defining a method
def captainDesignation = (y: String) => "captain " + y
// Creating a higher order function
// that is assigned to the String elements
val result = names.map(y => captainDesignation(y))
// Displays output
println("Multiplied List is: " + result)
}
}
输出
Multiplied List is: Set(captain sunil, captain akhil, captain rakhi)
重要要点
- 在没有副作用的情况下,应该遵循这些语法。
- 这些约定是为了提高代码的可读性,使其更容易理解。
- 它可以通过忽略一些额外的字符而节省一些空间。
极客教程