Coursera Scala 4-1:函数作为对象

简介: <div style="margin:0px; padding:0px; border:0px; line-height:1.6; font-family:'Helvetica Neue',Arial,'Hiragino Sans GB',STHeiti,'Microsoft YaHei','WenQuanYi Micro Hei',SimSun,Song,sans-serif; font


Coursera Scala 4-1:函数作为对象

Functions Types Relate to Classes

Scala是纯粹的面向对象的语言,函数是拥有apply方法的对象
函数类型A=>B等价于:

package scala
trait Function1[A,B]{
  def apply(x:A):B
}

Functions Values Ralate to Objects

匿名函数

(x:Int) => x*x

等价于:

{ class AnonFun extends Function1[Int, Int] {
    def apply(x:Int):Int = x*x
   }
 new AnonFun
}

更短的写法:

new Function1[Int, Int] {
    def apply(x:Int):Int = x*x
}

函数调用

对于函数调用,如f(a,b),f是class type,函数调用等价于:

f.apply(a,b)

所以,如下写法:

val f = (x: Int) => x*x
f(7)

转换成面向对象形式:

val f = new Function1[Int,Int] {
    def apply(x: Int) = x*x
}
f.apply(7)

以上对类型 f 的转换叫做eta-expansion

eta-expansion

函数调用 例子:

List(1,2)=List.apply(1,2)

object Function{
 def apply[T](x:T):T=x
}
Function[Int](1)                                //> res0: Int = 1
目录
相关文章
|
分布式计算 Scala Spark
Scala【集合常用方法和函数操作(下)】
Scala【集合常用方法和函数操作(下)】
|
分布式计算 Scala Spark
Scala 【集合常用方法和函数操作-上】
Scala 【集合常用方法和函数操作-上】
|
12月前
|
Java Scala
Scala 类和对象
Scala 类和对象
154 5
|
Java Scala
Scala 方法与函数
Scala 方法与函数
139 1
|
编译器 Scala
认识scala中的函数
认识scala中的函数
211 5
|
Scala
Scala中的类和对象:定义、创建和使用
Scala中的类和对象:定义、创建和使用
282 1
|
Scala
Scala函数和方法
Scala函数和方法
93 1
|
Scala
164 Scala 对象
164 Scala 对象
70 0
|
机器学习/深度学习 分布式计算 Java
Scala方法和函数
Scala方法和函数
230 0
|
Scala 网络架构 程序员
Coursera Scala 5-4:List的高阶函数
<div style="margin:0px; padding:0px; border:0px; line-height:1.6; font-family:'Helvetica Neue',Arial,'Hiragino Sans GB',STHeiti,'Microsoft YaHei','WenQuanYi Micro Hei',SimSun,Song,sans-serif; font
1307 0