加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 综合聚焦 > 服务器 > 安全 > 正文

scala中的方法

发布时间:2020-12-16 09:47:52 所属栏目:安全 来源:网络整理
导读:scala中的方法 在OOP中,方法作用于对象,是对象的行为,在Scala中的方法也是如此。 方法定义 定义方法的基本格式是: def 方法名称(参数列表):返回值 = 方法体 scala中方法的返回值默认是方法体重的最后一行表达式 的值,当然也可以用return来执行返回值

scala中的方法

在OOP中,方法作用于对象,是对象的行为,在Scala中的方法也是如此。

方法定义

定义方法的基本格式是:

def 方法名称(参数列表):返回值 = 方法体

scala中方法的返回值默认是方法体重的最后一行表达式 的值,当然也可以用return来执行返回值,但scala并不推荐这么做。

def function1(param1: String,param2: Int): String = {
         "[" + param1 + "]" + ",[" + param2 + "]"
 }

 def function2(param1: String,param2: String): String = {
         return "[" + param1 + "]" + ",[" + param2 + "]"
 }

scala提供一些强大的功能:类型推断。在定义方法时,可以不显式 的制定方法的返回值,scala编译器可以根据函数体中的具体内容来推断方法的返回值类型

//返回类型被定义为String
 def function2(param1: String,param2: String) = {
          "[" + param1 + "]" + ",[" + param2 + "]"
 }

需要注意的是,若使用return来制定函数的返回值,次数scala的类型推断将会失效,次数必须显式执行返回值类型。

def function2(param1: String,param2: String) = {
          //编译时报错
          return "[" + param1 + "]" + ",param2: String): String = {
          //通过编译
          return "[" + param1 + "]" + ",[" + param2 + "]"
 }

方法也可以没有返回值(返回值是Unit),类似于Java的void。

def function3(param1: String,param2: Double) {
        println("param1:" + param1 + ",param2: " + param2)
}

def function4(param1: String,param2: String): Unit = {
        println("param1:" + param1 + ",param2: " + param2)
}

默认参数和带名参数

在定义方法参数时,可以为某个参数指定默认值,带有默认值的参数在被调用时可以不为其传入实参。

def function5(left: String = "<",content: String,right: String = ">"): Unit ={
         println(left + content + right)
}

上面定义的方法中,参数left和right已经指定默认值,可以用下面的方式进行调用

funciton5(content = "abcd")

这里有一点需要注意,当未被指定默认值的参数不是第一个参数时,参数名称不能省略,这和其他语言的特性是一样的

funciton5("abcd") // "abcd"被赋给了left,而content是没有值的。 

当向方法中传入实参时,执行参数名称,则传入实参的顺序可以与定义时指定的参数顺序不一致

function5(right="]",left="[",content="abcd")

若不制定参数的名称,则必须按照方法的参数列表顺序进行传参

function5("[","abcd","]")

可变参数

当方法需要多个相同类型的参数时,可以用可变参数简化方法的定义

//从左到右拼接字符串
def function6(strs: String*): String = {
           strs.reduceLeft( _ + _)
}

此处strs是一个Seq[String]

def function7(values: Int*): Int = {
          values.reduceRight(_ + _)
}

function7(1 to 10:_*)

此处的 :_是将一个Range转成一个Seq

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读