Scala命名参数
通常情况下,传入参数与函数定义的参数列表一一对应
命名参数允许使用任意顺序传入参数
def printName(first:String, last:String) = {
println(first + " " + last)
}
//Prints "John Smith"
printName("John","Smith")
printName(first = "John",last = "Smith")
printName(last = "Smith",first = "John")
示例
通过指定参数名字,传递参数值
object test {
def main(args: Array[String]): Unit = {
def canshu1(name:String,age:Int):Unit={
println(s"你的名字是$name,你的年龄是$age")
}
canshu1("老王",18)
canshu1(age=20,name="老张")
}
}
参数的长度未知,通过*来表示,可以传入多个参数
object test {
def main(args: Array[String]): Unit = {
def canshu2(name:String,a:String*):Unit={
println(name)
for(i<-a)
print(i)
}
canshu2("老王","你是","帅哥","嘛?")
}
}
匿名函数
指不含函数名称的函数
匿名函数定义
- "=>"左边为参数列表
- "=>"右边为函数体
(x:Int)=>x*x
(x:Int)=>{println(x);x*x}
() => { System.getProperty("user.dir") }
val f1=(x:Int)=>{println(x);x*x}
f1(2)
匿名函数定义及使用
object test {
def main(args: Array[String]): Unit = {
//匿名函数:(a:Int,b:Int)=>a+b
def sum1(a:Int,b:Int):Int=a+b
//定义一个变量或常量去调用匿名函数
val aa=(a:Int,b:Int)=>a+b
val bb=aa
println(sum1(10,10))
println(aa(10,20))
println(bb(10,30))
val a : Int = 10
val sum2:(Int,Int)=>Int=(a:Int,b:Int)=>a+b
val sum3:(Int,Int)=>Int=aa
val sum4:(Int,Int)=>Int=sum1
println(sum2(10,40))
println(sum3(10,50))
println(sum4(10,60))
}
}