个人随笔
目录
对Scala中函数字面量理解
2019-12-11 23:27:46

首先,在Scala里,一切皆对象,函数字面量(匿名函数)也不例外!这也是为什么我们可以把函数字面量赋给一个变量的原因, 是对象就有对应的类型,那么一个函数字面量的真实类型是什么呢?看下面这个例子:

  1. scala> var inc = (x: Int) => x + 1
  2. inc: Int => Int = <function1>
  3. scala> inc.isInstanceOf[Function1[Int,Int]]
  4. res0: Boolean = true

我们在调用上面这个函数的时候直接如下调用:

  1. inc3

为什么呢?

在Scala的scala包里,有一系列Function trait,它们实际上就是函数字面量作为“对象”存在时对应的类型。Function类型有多个版本,Function0表示无参数函数,Function1表示只有一个参数的函数,以此类推。

也就是我们上面的函数字面量也是对象,并且是类Function1的对象,那么为什么可以直接加个括号调用呢?原因是因为Function1有一个apply方法,我们知道类中的apply方法调用方式是:对象()。具体可以参考:Scala的apply.

 318

啊!这个可能是世界上最丑的留言输入框功能~


当然,也是最丑的留言列表

有疑问发邮件到 : suibibk@qq.com 侵权立删
Copyright : 个人随笔   备案号 : 粤ICP备18099399号-2