您的位置:首页 > 其它

scala 传值参数和传名参数 ():=>和:=>

2015-09-18 19:09 323 查看
传值参数代码示例:

def test1(code: ()=>Unit){
println("start")
code() //要想调用传入的代码块,必须写成code(),否则不会调用。
println("end")
}
test1 {//此代码块,传入后立即执行。
println("1111")
()=>{println("2222")}
}
输出内容:
1111
start
2222
end


传名参数的示例:

def test(code : => Unit){
println("start")
code // 这行才会调用传入的代码块,写成code()亦可
println("end")
}
test{// 此处的代码块不会马上被调用
println("1111")
println("2222")
}
输出结果:
start
1111
2222
end


因为scala建议如果函数的参数只有一个,可以考虑使用{}代替(),因此test和test1的调用都是{},又因为test的参数是传名参数函数,因此传入的参数是不会被执行的,而test1的参数是传值参数,因此需要先计算参数的值,然后再传入test1的方法体中,恰好test1传入参数的计算结果是一个匿名函数,因此可以执行,如果test1的传入参数的计算结果不是函数,那么就会报错。所以test和test1的调用,输出结果有所不同。

文章参考 :

=>Unti和:=>的区别http://scalagroup.group.iteye.com/group/topic/26303, 当然本片文章的内容介绍的是:=>和():=>的区别。

而=>Unit和:=>的区别是,() => Unit是一个函数,=> Unit 是一个执行结果为Unit的表达式。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: