scala 函数参数列表
scala 支持两种方式的参数列表
A类型参数列表
与java类似,()内可以放入任意数量的参数,不同点在于参数可以是function,如def fun1(input1:String,f:String =>Unit)={ f(input1);};f:String =>Unit 代表函数f,一个String类型参数,返回参数类型Unit
调用:fun1("123",{i=>println(i+1)});
B类型参数列表
与java参数列表不同,scala可以使用多个( ),与上一种方式相同参数可以是function
def fun4(input1:String)(f:String =>Unit)={ f(input1); } 调用:fun4("222"){i=>println(i+1)};
两种参数列表的差异
差异点是使用泛型,在参数存在function类型参数时。
A类型
def fun2[T](input1:T,f:T=>Unit)=f(input1);
scala 无法推断T类型,调用必须指定类型
fun2("222",{i=>println(i+1)});错误fun2[String]("222",{i=>println(i+1)});正确
B类型
def fun3[T](input1:T)(f:T=>Unit)=f(input1);scala能够推断T类型
fun3(1){i=>println(i+1)};
更多样例
B类型同一()多参数
def fun5(input1:String,input2:String)(f:(String,String)=>Unit)=f(input1,input2);
调用:
fun5("1","2"){(i,j)=>val k=i;val f=j;println(k+f)};
总结
scala一大特点是支持函数式编程,参数列表可以传人function类型。根据传人的不同function,函数可以表现出不同行为。
类似java的多态。