Scala方法与函数

Scala中有方法和函数两种,两者区别很小。Scala方法是类的一部分,而函数是一个对象可以赋值给一个变量。Scala中的函数则是一个完整的对象,Scala中的函数其实就是继承了Trait的类的对象。在Scala中使用val 语句可以定义一个函数,def语句定义方法。

class FunctionMethodDemo {
  // 方法
  def method(x: Int, y: Int) = x + y
  // 函数
  val func = (x: Int, y: Int) => x + y
}

 

方法的定义

Scala的方法定义格式如下:

def 函数名字(参数名称:参数类型):返回值类型={
    方法体
}

需要注意的是:

① 方法体最后一行就是返回值,不需要使用Return

② 无返回参数时,返回值类型为Unit,等价于Java中的void关键字。

③ 如果方法体只有一行时,可以用类似 def method(x: Int, y: Int) = x + y 的方式实现。

方法中的参数

Scala中参数可以分为默认参数、可变参数以及命名参数。

  • 默认参数

在方法声明时,会给参数赋值一个默认值。例如下图Spark源码所示

对于textFile方法的minPartitions参数,如果在调用的时候不进行赋值,则会默认是使用defaultMinPartitions对应值。

  • 可变参数

传递的参数是不固定的,可多可少。

常见的小场景就是写一个求和的方法,随意传递几个参数,即可实现求和的逻辑:

def getSum(numbers:Integer*):Int={
    var sum=0
    for(number<-numbers){
      sum+=number
    }
    sum
 }
  • 命名参数

命名参数即根据方法中的字段名称在调用时,可不按照声明顺序调用,只是指定参数值即可。

方法的调用

方法调用形式:functionName(参数列表)

如果方法中不含参数,可以不需要(),直接使用functionName就可以实现调用。

Scala中的to、util、range

to:左闭右闭,调用方式有两种: 1 to 10 《=======》1.to(10) 

util: 左闭右开,1.until(10)

range:左闭右开, range(from,to,step)

 

 


版权声明:本文为qq_35363507原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。