一、方法定义
方法定义的基本格式:
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)) } }