`
edge
  • 浏览: 66779 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

Scala概述(三)统一的对象模型(2)续

阅读更多

某些Scala的操作符并不总对所有参数求值,例如标准布尔操作符&&||,这种操作符也可以是方法调用,因为Scala的参数是允许传名的。下面是一个Bool类,模拟系统内建的布尔类型。

abstract class Bool {

  def && (x: => Bool): Bool

  def || (x: => Bool): Bool

}

在这个类中,&&||的形参是“=>Bool”,里面的箭头表示实际参数以未求值的状态进行传递,即参数在每一次被引用的时候才求值(也就是说这个参数实际上像一个无参数的函数一样)。

这是Bool类型的两个典型(canonical)实例:

object False extends Bool {

  def && (x: => Bool): Bool = this

  def || (x: => Bool): Bool = x

}

object True extends Bool {

  def && (x: => Bool): Bool = x

  def || (x: => Bool): Bool = this

}

从上述实现可以看出,&&(或者相应地||)操作,只有在左侧对象是True(或相应地False)的时候,右侧对象才会被求值。

    如同本节所示,在Scala中可以把所有操作符定义为方法,每一个操作则是一个方法调用。为了性能需求,Scala的编译器会把参数为值类型的操作直接编译为基本操作指令,但这对于编程者是完全透明的。

    在前面的例子中,ZeroSucc都继承一个类,这并不是唯一的可能性。在Scala中一个类或对象可以同时继承一个类以及若干个特征(traits),一个特征是一个抽象类,作用就是用来与其它类组合。特征有时候类似于Java中的接口,可以用于定义一套抽象方法,用于被其他类实现。但不同的是Scala的特征可以有属性以及具体方法。(traits将会在后面介绍——译注)

分享到:
评论

相关推荐

    Scala 概述(瑞士洛桑联邦理工)

    Scala 概述(瑞士洛桑联邦理工) Scala 概述(瑞士洛桑联邦理工)

    scala模型分析.emmx

    史上最强思维导图记忆scala array方法

    scala课件.zip

    Scala概述.pptx 变量.pptx 运算符.pptx 程序流程控制.pptx 函数式编程基础.pptx 面向对象编程(基础部分).pptx 面向对象编程(中级部分).pptx 面向对象编程(高级特性).pptx 隐式转换和隐式参数.pptx 集合(上)-基本使用...

    Programming in Scala 2nd Edition 英文版

    《Scala编程》介绍了一种新的编程语言,它把面向对象和函数式编程概念有机地结合为整体,从而形成一种完整统一、语义丰富的新思维体系。《Scala编程》循序渐进,由浅入深,经作者精心组织、仔细编排,将语言中的各种...

    Scala程序设计第2版

    Scala程序设计第2版 Scala 是一门多范式(multi-paradigm)的编程语言,设计初衷是要集成面向对象编程和函数式编程的各种特性。 Scala 运行在Java虚拟机上,并兼容现有的Java程序。

    Scala编程详解 第13讲-Scala编程详解:面向对象编程之对象 共9页.pptx

    第13讲-Scala编程详解:面向对象编程之对象 共9页 第14讲-Scala编程详解:面向对象编程之继承 共13页 第15讲-Scala编程详解:面向对象编程之Trait 共14页 第16讲-Scala编程详解:函数式编程 共14页 第17讲-Scala编程...

    m2e-scala.zip

    Eclipse Scala环境的配置 https://yanxml.blog.csdn.net/article/details/89250222 配套的下载资源. http://alchim31.free.fr/m2e-scala/update-site/ 这个地址被墙了.上传,方便大家离线安装`m2e-scala`.

    Scala面向对象.docx

    Scala面向对象

    wootjs, Scala 和JavaScript通过 Scala.js的WOOT模型.zip

    wootjs, Scala 和JavaScript通过 Scala.js的WOOT模型 带 Scala.js的 WOOT协作文本编辑,使用WOOT算法。在 Scala 中实现,在JVM和JavaScript解释器上运行。不耐烦的 $ sbt server/run 然后打开 http:

    scala编程指南第三版

    spark,scala编程指南第三版,非常好的资料,高清无水印

    Scala程序设计(第2版)

    1.1.1 富有魅力的Scala 2 1.1.2 关于Java 8 3 1.2 安装Scala 3 1.2.1 使用SBT 5 1.2.2 执行Scala命令行工具 6 1.2.3 在IDE中运行Scala REPL 8 1.3 使用Scala 8 1.4 并发 17 1.5 本章回顾与...

    Scala函数式编程

    2 scala很多库在设计的时候,不理解原因,包括Option,Collection的很多看似有冗余的地方 3 很多scala的默认写法,不理解 4 多态的具体化,尤其是协变的意义所在 5 各种重载的符号使用 之前读过 programming in...

    基于Scala的Spark模型转换为PMML格式设计源码

    文件类型包括9个XML配置文件、2个CRC文件、2个Scala源代码文件、1个名称文件、1个Markdown文档、1个Parquet数据文件、1个名称列表文件、1个TXT文本文件、1个PMML文件和1个Java源代码文件。该系统利用JPMML-Spark将...

    Scala编程(第三版)中英文.zip

    Scala编程(第三版)中英文,代码全 Martin Odersky 是Scala 编程语言的缔造者。他是瑞士洛桑理工学院(EPFL)的教授,同时也是Typesafe, Inc.(已更名为Lightbend)的创始人。他的研究方向是编程语言和系统,更具体...

    Programming in Scala 2nd Edition

    Programming in Scala 2nd Edition

    Scala编程详解 第14讲-Scala编程详解:面向对象编程之继承 共13页.pptx

    第13讲-Scala编程详解:面向对象编程之对象 共9页 第14讲-Scala编程详解:面向对象编程之继承 共13页 第15讲-Scala编程详解:面向对象编程之Trait 共14页 第16讲-Scala编程详解:函数式编程 共14页 第17讲-Scala编程...

    Scala编程详解 第12讲-Scala编程详解:面向对象编程之类 共12页.pptx

    第13讲-Scala编程详解:面向对象编程之对象 共9页 第14讲-Scala编程详解:面向对象编程之继承 共13页 第15讲-Scala编程详解:面向对象编程之Trait 共14页 第16讲-Scala编程详解:函数式编程 共14页 第17讲-Scala编程...

    Scala类和对象.md

    Scala类和对象.md

    spark-timeSeries.rar_scala 时间序列_spark ARIMA_spark arima_spark 滑

    采用ARIMA模型(自回归积分滑动平均模型)+三次指数平滑法(Holt-Winters),用scala语言实现的在spark平台运行的分布式时间序列预测算法

    scala netbeans 插件(2)

    scala netbeans 插件(2)scala netbeans 插件(2)scala netbeans 插件(2)

Global site tag (gtag.js) - Google Analytics