Scala 函数 方法 一样

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)
    }
  }


}

猜你喜欢

转载自my.oschina.net/windows20/blog/1803216