`
edge
  • 浏览: 69272 次
  • 性别: 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将会在后面介绍——译注)

分享到:
评论

相关推荐

    A Brief Introduction to Scala

    #### Scala概述 Scala是一种相对新兴的编程语言,旨在为Java虚拟机(JVM)以及后来的通用语言运行时(CLR)提供支持。它融合了函数式编程(Functional Programming, FP)与面向对象编程(Object-Oriented Programming, OOP...

    Programming in Scala 2nd Edition

    2. **面向对象编程**:探讨Scala如何支持面向对象编程,包括类、对象、继承、多态等概念。 3. **函数式编程**:介绍函数式编程的核心理念,如纯函数、高阶函数、递归等,并展示了如何在Scala中实现这些概念。 4. **...

    Scala详细总结(精辟版++)

    - **面向对象**:Scala是纯粹的面向对象语言,每一个值都是对象,所有的操作都是方法调用。 - **函数式编程**:Scala同时也是一个成熟的函数式编程语言,支持高阶函数、模式匹配等功能。 - **类型推断**:Scala具有...

    Scala 电子书

    这三本书将帮助读者深入理解Scala的核心概念、语法特性以及在实际开发中的应用。 "Scala Tutorial"可能是为初学者设计的,它通常会涵盖基础语法,如变量声明、数据类型、控制流结构、类与对象的定义,以及函数式...

    programming in scala

    2. **面向对象与函数式的结合**:Scala同时支持面向对象编程和函数式编程,这意味着开发者可以根据具体的需求选择最适合的编程范式。这种混合型的编程风格提供了高度的灵活性。 3. **静态类型**:Scala是一种静态...

    Learning Concurrent Programming in Scala

    2. **Scala并发模型**:深入探讨Scala提供的各种并发机制,如Futures、Promises、Actors等,并解释它们的工作原理及应用场景。 3. **并发编程模式**:学习不同的并发编程模式,比如共享内存模型和消息传递模型,并...

    scala介绍

    1. **语言概述**:Scala由Martin Odersky在2003年创建,它的名字是“Scalable Language”的缩写,意在表达其设计目标是能够随着系统规模的扩大而平滑扩展。Scala运行在Java虚拟机(JVM)上,因此它可以无缝地利用...

    Scala语言规范.zip

    4. **Actor模型**:Scala内置了Akka库,它是基于Actor模型的并发处理框架,允许程序员创建能够并发执行且互不干扰的独立实体。 5. **表达式和控制流**:Scala的控制流语句,如if-else、for-comprehensions和while...

    经典书籍 Scala for the Impatient.pdf

    2. **面向对象编程**:作为一门支持面向对象特性的语言,Scala允许开发者定义类、继承和多态。书中详细讲解了如何在Scala中实现这些概念,以及它们与传统面向对象语言的区别。 3. **函数式编程**:Scala也支持函数式...

    Scala impatient

    2. **强大的并发模型**:Scala提供了Actors模型来实现并发编程,这种模型可以有效地处理大规模并发任务,降低了编写并发代码的复杂度。 3. **静态类型检查**:Scala是一种静态类型的语言,这意味着编译器可以在编译...

    scala 编程语言

    #### 一、Scala编程语言概述 Scala是一种现代的多范式编程语言,它结合了面向对象编程和函数式编程的特点。Scala的设计目标是解决Java等传统面向对象语言在扩展性和灵活性方面的局限性,同时保持与现有Java生态系统...

    Beginning Scala

    - **Actor模型**:Scala提供了Actor模型来实现并发编程,这是一种基于消息传递的并发模型,非常适合构建高并发应用。 - **Future与Promise**:Scala的`scala.concurrent`包提供了Future和Promise机制,用于处理异步...

    大数据技术之Spark编程基础-第2章-Scala语言基础(共155页).pptx

    2.1 Scala语言概述 - 计算机的缘起:讲解了λ演算和图灵机对现代计算机科学的影响,λ演算是函数式编程的基础,而图灵机则启发了冯·诺依曼的计算机体系结构。 - 编程范式:介绍了命令式编程(如C++、Java)和函数式...

    Scala_2.7.6_API.chm.7z

    2. **对象与类**:在Scala中,类和对象是主要的结构单元。类用于创建实例,而对象可以被视为单例类,它们提供了一种全局访问点,常用于实现模式匹配或作为工具类。 3. **特质(Traits)**:Scala的特质类似于Java的...

    Scala.for.the.Impatient.2nd.2017.pdf

    - **类与对象**:Scala中的每个类都可以有一个与之对应的伴生对象(companion object),用于实现静态方法或字段的功能。 - **模式匹配**:Scala提供了强大的模式匹配能力,可以用于解析数据结构、处理异常等多种场景...

    scala编程指导文档

    #### 一、Scala语言概述 Scala是一种多范式编程语言,结合了面向对象编程和函数式编程的特点,运行在Java平台(JVM)上。它既能够提供静态类型检查的安全性,又能实现动态语言的灵活性。Scala的设计目标是解决Java的...

Global site tag (gtag.js) - Google Analytics