前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Scala的方法和函数讲解

Scala的方法和函数讲解

作者头像
用户8670130
修改2021-08-31 11:04:49
8750
修改2021-08-31 11:04:49
举报
文章被收录于专栏:用户8670130的专栏

在Scala中,它和Java一样也是拥有方法和函数。Scala的方法是类的一部分,而函数是一个对象可以赋值给一个变量。换句话来说,在类中定义的函数即是方法。

Scala 中可以使用 def语句和val 语句定义函数,而定义方法只能使用def 语句。下面我们分别对Scala的方法和函数进行讲解。

1.方法

Scala方法的定义格式如下:

代码语言:javascript
复制
def functionName ([参数列表]):[return type]={  function body

  return [expr]}

在上面代码中可以看出,Scala的方法是由多个部分组成。具体如下:

def:是Scala方法的关键字,并且是固定不变的,一个方法的定义是由def关键字开始的。functionName:是Scala 方法的方法名。([参数列表]):[return type]:是Scala方法的可选参数列表,每个参数列表中的每个参数都有一个名字,参数名后跟着冒号和参数类型。function body:是方法的主体。return [expr]:是Scala方法的返回类型,可以是任意合法的 Scala 数据类型。若没有返回值,则返回类型为“Unit”。

下面,定义一个方法add,实现两个数相加求和,示例代码如下:

代码语言:javascript
复制
def add(a:Int,b:Int):Int={

  var sum:Int = 0

  sum = a + b

  return sum

}

Scala的方法调用的格式如下:

代码语言:javascript
复制
//没有使用实例的对象调用格式

functionName(参数列表)

//方法使用实例的对象来调用,我们可以使用类似java的格式 (使用“.”号)

[instance.]functionName( 参数列表 )

下面,在类Test中,定义一个方法addInt,实现两个整数相加求和。在这里,我们通过“类名.方法名(参数列表)”来进行调用,示例代码如下:

代码语言:javascript
复制
scala> :paste                # 多行输入模式的命令

  // Entering paste mode (ctrl-D to finish)  

  object Test{

     def addInt(a:Int,b:Int):Int={

       var sum:Int=0

       sum=a+b

       return sum

    }

  }

  // Exiting paste mode, now interpreting.

  defined object Test

  scala> **Test.addInt(4,5)**

  res0: Int = 9

2.函数

在Scala中,由于使用def语句定义函数的格式以及调用函数的格式均与方法一样,因此,这里不做赘述。然而,Scala函数也是有区别于方法的,可以使用val语句定义函数的格式,并且函数必须要有参数列表,而方法可以没有参数列表。接下来,我们来介绍使用val语句定义和调用函数的具体格式。

Scala函数的定义格式如下:

代码语言:javascript
复制
val functionName ([参数列表]) =>  function body
}

下面,定义一个函数addInt,实现两个整数相加求和,示例代码如下:

代码语言:javascript
复制
val addInt( a:Int, b:Int )=>a+b

3.方法转换成函数

方法转换成函数的格式如下:

代码语言:javascript
复制
val f1 = m _

在上述的格式中,方法名m后面紧跟一个空格和下划线,是为了告知编译器将方法m转换成函数,而不是要调用这个方法。下面,定义一个方法m,实现将方法m转成函数,示例代码如下:

代码语言:javascript
复制
scala> def m(x:Int,y:Int):Int =x*y     # 方法

m: (x: Int,y: Int)Int

scala> **val f=m _**

f:(Int,Int) => Int = (function2)      # 函数

}

小提示:

Scala方法的返回值类型可以不写,编译器可以自动推断出来,但是对于递归函数来说,必须要指定返回类型。

推荐学习:

大数据教程轻松学会scala

本文系转载,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文系转载前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 推荐学习:
  • 大数据教程轻松学会scala
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档