2者除了定义的形式不一定,功能可以说是一致的,见如下代码
package scalapackage.funcwithmethod
/**
* Created by Germmy on 2018/4/29.
*/
class TestFuncAndMethod {
}
object TestFuncAndMethod {
//1.定义一个函数
val func: Int => Int = x => x * x
//2.定义一个方法
def m1(x: Int) = x * x
//3.发现2者是等价的
def main(args: Array[String]) {
val array: Array[Int] = Array(1, 4, 5, 9, 8)
//小试牛刀,看看这个函数好不好使
// val func1: Int = func(4)
// println(func1)
//用lambda表达式,将func将参数传到参数中
val map: Array[Int] = array.map(x => func(x))
for (a <- map) {
println(a)
}
//用类似方法引用的方法,入参都省了,这个scala会自动推断
val map2: Array[Int] = array.map(func)
// for(a<-map2){
// println(a)
// }
//用lambda表达式,将方法将参数传到参数中
val map1: Array[Int] = array.map(x => m1(x))
// for(a<-map1){
// println(a)
// }
//用类似方法引用的方法,入参都省了,这个scala会自动推断
val map3: Array[Int] = array.map(m1)
for (a <- map3) {
println(a)
}
}
}