某些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的编译器会把参数为值类型的操作直接编译为基本操作指令,但这对于编程者是完全透明的。
在前面的例子中,Zero和Succ都继承一个类,这并不是唯一的可能性。在Scala中一个类或对象可以同时继承一个类以及若干个特征(traits),一个特征是一个抽象类,作用就是用来与其它类组合。特征有时候类似于Java中的接口,可以用于定义一套抽象方法,用于被其他类实现。但不同的是Scala的特征可以有属性以及具体方法。(traits将会在后面介绍——译注)
分享到:
相关推荐
#### Scala概述 Scala是一种相对新兴的编程语言,旨在为Java虚拟机(JVM)以及后来的通用语言运行时(CLR)提供支持。它融合了函数式编程(Functional Programming, FP)与面向对象编程(Object-Oriented Programming, OOP...
2. **面向对象编程**:探讨Scala如何支持面向对象编程,包括类、对象、继承、多态等概念。 3. **函数式编程**:介绍函数式编程的核心理念,如纯函数、高阶函数、递归等,并展示了如何在Scala中实现这些概念。 4. **...
- **面向对象**:Scala是纯粹的面向对象语言,每一个值都是对象,所有的操作都是方法调用。 - **函数式编程**:Scala同时也是一个成熟的函数式编程语言,支持高阶函数、模式匹配等功能。 - **类型推断**:Scala具有...
这三本书将帮助读者深入理解Scala的核心概念、语法特性以及在实际开发中的应用。 "Scala Tutorial"可能是为初学者设计的,它通常会涵盖基础语法,如变量声明、数据类型、控制流结构、类与对象的定义,以及函数式...
2. **面向对象与函数式的结合**:Scala同时支持面向对象编程和函数式编程,这意味着开发者可以根据具体的需求选择最适合的编程范式。这种混合型的编程风格提供了高度的灵活性。 3. **静态类型**:Scala是一种静态...
2. **Scala并发模型**:深入探讨Scala提供的各种并发机制,如Futures、Promises、Actors等,并解释它们的工作原理及应用场景。 3. **并发编程模式**:学习不同的并发编程模式,比如共享内存模型和消息传递模型,并...
1. **语言概述**:Scala由Martin Odersky在2003年创建,它的名字是“Scalable Language”的缩写,意在表达其设计目标是能够随着系统规模的扩大而平滑扩展。Scala运行在Java虚拟机(JVM)上,因此它可以无缝地利用...
4. **Actor模型**:Scala内置了Akka库,它是基于Actor模型的并发处理框架,允许程序员创建能够并发执行且互不干扰的独立实体。 5. **表达式和控制流**:Scala的控制流语句,如if-else、for-comprehensions和while...
2. **面向对象编程**:作为一门支持面向对象特性的语言,Scala允许开发者定义类、继承和多态。书中详细讲解了如何在Scala中实现这些概念,以及它们与传统面向对象语言的区别。 3. **函数式编程**:Scala也支持函数式...
2. **强大的并发模型**:Scala提供了Actors模型来实现并发编程,这种模型可以有效地处理大规模并发任务,降低了编写并发代码的复杂度。 3. **静态类型检查**:Scala是一种静态类型的语言,这意味着编译器可以在编译...
#### 一、Scala编程语言概述 Scala是一种现代的多范式编程语言,它结合了面向对象编程和函数式编程的特点。Scala的设计目标是解决Java等传统面向对象语言在扩展性和灵活性方面的局限性,同时保持与现有Java生态系统...
- **Actor模型**:Scala提供了Actor模型来实现并发编程,这是一种基于消息传递的并发模型,非常适合构建高并发应用。 - **Future与Promise**:Scala的`scala.concurrent`包提供了Future和Promise机制,用于处理异步...
2.1 Scala语言概述 - 计算机的缘起:讲解了λ演算和图灵机对现代计算机科学的影响,λ演算是函数式编程的基础,而图灵机则启发了冯·诺依曼的计算机体系结构。 - 编程范式:介绍了命令式编程(如C++、Java)和函数式...
2. **对象与类**:在Scala中,类和对象是主要的结构单元。类用于创建实例,而对象可以被视为单例类,它们提供了一种全局访问点,常用于实现模式匹配或作为工具类。 3. **特质(Traits)**:Scala的特质类似于Java的...
- **类与对象**:Scala中的每个类都可以有一个与之对应的伴生对象(companion object),用于实现静态方法或字段的功能。 - **模式匹配**:Scala提供了强大的模式匹配能力,可以用于解析数据结构、处理异常等多种场景...
#### 一、Scala语言概述 Scala是一种多范式编程语言,结合了面向对象编程和函数式编程的特点,运行在Java平台(JVM)上。它既能够提供静态类型检查的安全性,又能实现动态语言的灵活性。Scala的设计目标是解决Java的...