文章目录
一、方法定义二、无参方法三、默认参数方法四、可变参数方法五、方法定义的注意事项
一、方法定义
方法定义的基本格式:
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)
}
}
二、无参方法
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
object DefaultMethod {
// 定义带有默认值参数的方法
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())
println(())
// 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)
}
}
四、可变参数方法
package MethodDemo
object VaraParameters {
// 遍历传入的参数
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:_*)
}
}
五、方法定义的注意事项
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))
}
}
ref:Scala深入学习之方法的学习,深入浅出Scala编程语言入门到精通
参考阅读
发表评论