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
目录
相关文章
|
4月前
|
Java Scala
Scala 类和对象
Scala 类和对象
50 5
|
4月前
|
Java Scala
Scala 方法与函数
Scala 方法与函数
41 1
|
10月前
|
编译器 Scala
认识scala中的函数
认识scala中的函数
101 5
|
10月前
|
Scala
Scala中的类和对象:定义、创建和使用
Scala中的类和对象:定义、创建和使用
216 1
|
10月前
|
Scala
Scala函数和方法
Scala函数和方法
49 1
|
10月前
|
分布式计算 Scala Spark
Scala【集合常用方法和函数操作(下)】
Scala【集合常用方法和函数操作(下)】
|
10月前
|
分布式计算 Scala Spark
Scala 【集合常用方法和函数操作-上】
Scala 【集合常用方法和函数操作-上】
|
Scala
164 Scala 对象
164 Scala 对象
46 0
|
机器学习/深度学习 分布式计算 Java
Scala方法和函数
Scala方法和函数
124 0
|
Scala
Coursera Scala 2-1:高阶函数
<div style="line-height:1.6; orphans:2; widows:2; font-size:14px; font-family:'Helvetica Neue',Arial,'Hiragino Sans GB',STHeiti,SimSun,'WenQuanYi Micro Hei','Microsoft YaHei',sans-serif"> <h2 sty
1060 0