Scala深入学习之方法的学习

简介: 笔记

一、方法定义


方法定义的基本格式:

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

其中如果方法体的返回值是可以推断的话,返回值类型可以省略,但是如果方法是递归方法,返回值类型就不能省略

代码示例:

package methodDemo
/**
 * @author : 蔡政洁
 * @email :caizhengjie888@icloud.com
 * @date : 2020/8/19
 * @time : 3:44 下午
 */
object MethodDemo1 {
  // 定义方法,实现加的功能
  def add(x:Int,y:Int):Int = x+y     // 写法一
  // def add(x:Int,y:Int) = x+y         写法二:省略返回值类型
  // def add(x:Int)(y:Int) = x+y        写法三:写成参数列表的方式
  def main(args: Array[String]): Unit = {
    val res = add(5,3)
    // val res = add(5)(3)
    println(res)
  }
}
8


二、无参方法


代码示例:

package methodDemo
/**
 * @author : 蔡政洁
 * @email :caizhengjie888@icloud.com
 * @date : 2020/8/20
 * @time : 9:20 上午
 */
object MethodDemo2 {
  // 定义无参方法
  // def name:String = System.getProperty("user.name")
  def name():String = System.getProperty("user.name")
  def main(args: Array[String]): Unit = {
    // 方法调用
    println(name)
    println(name())
  }
}


三、默认参数方法


代码示例:

package methodDemo
/**
 * @author : 蔡政洁
 * @email :caizhengjie888@icloud.com
 * @date : 2020/8/20
 * @time : 9:25 上午
 */
object MethodDemo3 {
  // 定义带有默认值参数的方法
  def printMsg(string: String = "hello,world") = println(string)
  // 定义带有多个默认值参数的方法
  // def multiAdd(a:Int = 1,b:Int = 3,c:Int):Unit = println(a+b+c)
  def multiAdd(a:Int = 1,b:Int = 3,c:Int):Int = a+b+c
  def main(args: Array[String]): Unit = {
    // 注意这里是打印了两次,返回值的类型为Unit
    println(printMsg())
    // 3赋值给c
    val res1 = multiAdd(c=3)
    println(res1)
    // 2默认赋值给a,3赋值给c
    val res2 = multiAdd(2,c=3)
    println(res2)
    // 10赋值给b
    val res3 = multiAdd(b=10,c=3)
    println(res3)
    // 10赋值给a,20赋值给b,30赋值给c
    val res4 = multiAdd(10,20,30)
    println(res4)
  }
}

运行结果:

hello,world
()
7
8
14
60


四、可变参数方法


代码示例:

package methodDemo
/**
 * @author : 蔡政洁
 * @email :caizhengjie888@icloud.com
 * @date : 2020/8/20
 * @time : 10:14 上午
 */
object MethodDemo4 {
  // 遍历传入的参数
  def add(a:Int*) = {
    var sum = 0
    // 相当于把参数传入到一个数组,然后遍历数组
    for(item <- a){
      sum += item
      println(item)
    }
    println("sum="+sum)
  }
  def main(args: Array[String]): Unit = {
    // 调用方法,但是要注意参数的类型一致
    add(1,2,3,4,5)
    // 定义一个数组,将数组类型传入到方法里
    val arr = Array(10,20,30,40)
    add(arr:_*)
  }
}

运行结果:

1
2
3
4
5
sum=15
10
20
30
40
sum=100


五、方法定义的注意事项


  • 如果不使用return,方法体(表达式)中的最后一条表达式的值,就是方法的返回值
  • 如果使用return返回值,一定要指定返回类型,这时候自动推断失效了,一般不推荐使用return
  • 方法可以没有返回值,Unit类型
package methodDemo
/**
 * @author : 蔡政洁
 * @email :caizhengjie888@icloud.com
 * @date : 2020/8/20
 * @time : 10:30 上午
 */
object MethodDemo5 {
//  def add(x:Int,y:Int):Int = {x+y}
  // 如果不使用return,方法体(表达式)中的最后一条表达式的值,就是方法的返回值
  // 如果使用return返回值,一定要指定返回类型,这时候自动推断失效了,一般不推荐使用return
  // 方法可以没有返回值,unit类型
  def add(x:Int,y:Int):Int = { x+y}
  def main(args: Array[String]): Unit = {
    println(add(1,2))
  }
}



相关文章
|
7月前
|
分布式计算 Scala Spark
Scala【集合常用方法和函数操作(下)】
Scala【集合常用方法和函数操作(下)】
|
7月前
|
分布式计算 Scala Spark
Scala 【集合常用方法和函数操作-上】
Scala 【集合常用方法和函数操作-上】
|
2月前
|
分布式计算 大数据 Java
大数据-87 Spark 集群 案例学习 Spark Scala 案例 手写计算圆周率、计算共同好友
大数据-87 Spark 集群 案例学习 Spark Scala 案例 手写计算圆周率、计算共同好友
51 5
|
2月前
|
分布式计算 关系型数据库 MySQL
大数据-88 Spark 集群 案例学习 Spark Scala 案例 SuperWordCount 计算结果数据写入MySQL
大数据-88 Spark 集群 案例学习 Spark Scala 案例 SuperWordCount 计算结果数据写入MySQL
50 3
|
5月前
|
前端开发 Scala
Scala并发编程的react、loop方法详解
在这个例子中,`MyActor`会无限循环接收和处理消息。当收到一个字符串消息时,它会打印出"Received: "加上消息内容。如果收到其他类型的消息,它会打印"Unknown message"。
29 1
|
6月前
|
前端开发 Scala
Scala并发编程的react、loop方法详解
在这个例子中,`MyActor`会无限循环接收和处理消息。当收到一个字符串消息时,它会打印出"Received: "加上消息内容。如果收到其他类型的消息,它会打印"Unknown message"。
32 0
|
6月前
|
Scala
【收藏】Scala常用方法(笔记)
【收藏】Scala常用方法(笔记)
38 0
|
7月前
|
Scala 容器
Scala学习--day04--集合、常用方法、案例实操 - WordCount TopN、不同省份的商品点击排行
Scala学习--day04--集合、常用方法、案例实操 - WordCount TopN、不同省份的商品点击排行
108 2
|
7月前
|
消息中间件 分布式计算 大数据
Scala学习--day03--函数式编程
Scala学习--day03--函数式编程
102 2
|
7月前
|
Java Scala
Scala学习--day02---控制流、“九层妖塔—杨辉三角”
Scala学习--day02---控制流、“九层妖塔—杨辉三角”
194 1