scala中定义函数的几种方法

本文介绍了Scala中定义函数的多种方式,包括函数作为引用类型、必须包含输入和返回值、返回值通常封装在整体中(如元组)、无返回值表示Unit、函数调用实际上执行apply方法,以及Scala的类型推断和Tuple的语法糖特性。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

scala中定义函数的几种方法

①函数的本质就是引用类型,相当于Java中的new出来的实例;函数是在堆内存中新开辟的一片空间;

②定义的函数一定要有输入和返回值;

③scala方法的返回值一定是放在一个整体里的;(例如:元组)

④没有返回值相当于返回的是Unit;

⑤调用函数其实是调用函数里面的apply方法来执行逻辑;

⑥scala的编译期可以自动推断类型;

⑦tuple其实使用了语法糖。

package java_scala

object FunctionTest {
  def main(args: Array[String]): Unit = {
    //下面是scala中定义一个函数的几种方法
    
    val i = 10 //自动推断类型
    val j: Int = 10

    val f2 = (x: Int, y: Double) => (y, x) //省略函数类型,scala编译器可以自动推荐类型

    val f3: (Int, Double) => (Double, Int) = (x, y) => (y, x)

    val f4 = new Function2[Int, Double, (Double, Int)] {
      override def apply(v1: Int, v2: Double): (Double, Int) = {
        (v2, v1)
      }
    }

    val f5: Function2[Int, Double, (Double, Int)] = new Function2[Int, Double, (Double, Int)] {
      override def apply(v1: Int, v2: Double): (Double, Int) = {
        (v2, v1)
      }
    }

    val f6: (Int, Double) => (Double, Int) = new Function2[Int, Double, (Double, Int)] {
      override def apply(v1: Int, v2: Double): (Double, Int) = {
        (v2, v1)
      }
    }

    val f7 = new ((Int, Double) => (Double, Int)) {
      override def apply(v1: Int, v2: Double): Tuple2[Double, Int] = {
        new Tuple2[Double, Int](v2, v1)
      }
    }
  }
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值