Scala函数练习

package com.gsau.util.Chapter9
class FunctionTest {
  /**
    * 函数字面量(也就是匿名函数)
    */
  val x = List.range(1, 100) //创建一个普通的list
  val y = x.filter((i: Int) => i % 2 == 0) //传入了一个匿名函数创建一个只有偶数的新的list
  val z = x.filter(_ % 3 == 0) //传入了一个匿名函数创建一个只有奇数的新的list,这是一个简化的写法
  val double = (i: Int) => i * 2 //将函数字面量赋值给变量
  //显式声明函数返回值类型为Boolean的不同形式(当函数为但个参数的时候)
  val f: (Int) => Boolean = (i: Int) => {
    i % 2 == 0
  }
  val f1: Int => Boolean = i => {
    i % 2 == 0
  }
  val f2: Int => Boolean = i => i % 2 == 0
  val f3: Int => Boolean = _ % 2 == 0
  val f4 = (i: Int) => i % 2 == 0
  //函数接受两个Int的参数,返回输入参数和的Int值
  //1.隐式方式
  val add = (x: Int, y: Int) => {
    x + y
  }
  val add2 = (x: Int, y: Int) => x + y
  //2.显式方式
  val add3: (Int, Int) => Int = (x, y) => {
    x + y
  }
  val add4: (Int, Int) => Int = (x, y) => {
    x + y
  }
  val sum=(x:Int,y:Int,z:Int)=>{x+y+z}
  val f5=sum(1,2,_:Int)

  /**
    * 创建返回函数的函数
    * @param prefix
    * @return
    */
  def saySomeThing(prefix:String)=(s:String)=>{
      prefix+" "+s   //(s:String)=>{prefix+" "+s}  匿名函数
  }

  val sayHello=saySomeThing("Hello")

  /**
    * 定义一个接受函数作为参数的的方法
    */
  def method(fun: (Int, Int) => Int, index: Int, index2: Int) = {
    for (i <- 10 to index) {
      for (j <- 10 to index2) {
        var tmp = fun(i, j)
        println(tmp)
      }
    }
    val tmp = fun(11, 11)
    tmp
  }
}
package PackageTest {

  object testClass {
    def main(args: Array[String]): Unit = {
      val list = List.range(1, 100)
      val ts = new FunctionTest
      ts.z.foreach((i: Int) => print(i + " "))
      ts.x.foreach((i) => {
        if (i == 1) {
          println()
          print(i + "->")
        } else print(i + "->")
      })
      println("\n" + ts.double(1000))
      list.foreach(i => println(ts.f(i)))
      val fun: (Int, Int) => Int = (x, y) => {
        if (x > 10) {
          println(s"输入参数x=$x 大于等于10 可以进行计算")
          if (x > 10) {
            println(s"输入参数y=$y 大于等于10 可以进行计算")
            x * y
          } else {
            println(s"输入参数y=$y 小于10 不可以进行计算")
            0
          }
        } else {
          println(s"输入参数x=$x 小于10 不可以进行计算")
          0
        }
      }
      println(ts.method(fun,15,15))
      println(ts.f5(5))
      println(ts.sayHello("Jhon"))
    }
  }

}


猜你喜欢

转载自blog.csdn.net/qq_36381640/article/details/79962626