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月前
|
分布式计算 Scala Spark
Scala【集合常用方法和函数操作(下)】
Scala【集合常用方法和函数操作(下)】
|
4月前
|
分布式计算 Scala Spark
Scala 【集合常用方法和函数操作-上】
Scala 【集合常用方法和函数操作-上】
|
4月前
|
编译器 Scala
认识scala中的函数
认识scala中的函数
37 5
|
4月前
|
Scala
Scala中的类和对象:定义、创建和使用
Scala中的类和对象:定义、创建和使用
125 1
|
4月前
|
Scala
Scala函数和方法
Scala函数和方法
27 1
|
10月前
|
Scala
164 Scala 对象
164 Scala 对象
24 0
|
机器学习/深度学习 分布式计算 Java
Scala方法和函数
Scala方法和函数
94 0
|
设计模式 Ubuntu Java
|
Java 大数据 Scala
大数据开发基础的编程语言的Scala的类和对象
Scala是一种基于JVM的编程语言,它支持面向对象编程和函数式编程。本文将介绍Scala中类和对象的概念和用法,帮助开发者更好地理解和应用这门语言。
66 0
|
大数据 Serverless Scala
大数据开发基础的编程语言的Scala的函数和闭包
Scala是一种支持函数式编程的编程语言,它具有强大的函数和闭包功能。本文将介绍Scala中函数和闭包的概念和用法,帮助开发者更好地理解和应用这门语言。
76 0