Scala中大箭头的应用场景

scala中“=>”的应用场景

1、表示函数的返回类型

 def main(args: Array[String]): Unit = {

    //定义一个函数变量
    var x: (Int) => Int = test
    var x2: (Int) => String = test2
    println(x(2)) // 4
    println(x2(2)) // 2trx
  }

  def test(x: Int) = x * 2
  def test2(x: Int) = x+"trx"
(Int)=>Int、(Int)=>String 左边是参数类型,右边是返回值类型。

2、匿名函数

def main(args: Array[String]): Unit = {

    //  定义一个匿名函数
    var fun = (x: Int) => x * 2

    println(fun(10)) // 20

  }

匿名函数定义, 左边是参数 右边是函数实现体 (x: Int)=>{}

3、case语句

def main(args: Array[String]): Unit = {

    val x = 10
    val y = 10

    val value = x + y match {
      case 20 => x
      case 30 => y
    }

    print(value)
  }

在模式匹配 match 和 try-catch 都用 “=>” 表示输出的结果或返回的值

4、By-Name Parameters(传名参数)

传名参数在函数调用前表达式不会被求值,而是会被包裹成一个匿名函数作为函数参数传递下去,例如参数类型为无参函数的参数就是传名参数。

object SayHello {
 
  def main(args: Array[String]): Unit = {
    println("传值调用:")
    delayed0(time())
    println("===================")
 
    println("传名调用:")
    delayed(time())
    println("===================")
  }
 
  def time() = {
    println("获取时间,单位为纳秒")
 
    System.nanoTime
  }
 
  def delayed0(t : Long)={
    println("在 delayed0 方法内")
    println("参数"+t)
    t
  }
 
  def delayed(t: => Long) = {  //重点在这
    println("在 delayed 方法内")
    println("参数: " + t)
    t
  }
}

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章