5.2 抽象成员(Abstraction Members)
在Scala中,面向对象的抽象方式可以与函数式抽象起到同样的作用。例如:下例是一个以OO抽象方式定义的Cell类型。
abstract class AbsCell {
type T
val init: T
private var value: T = init
def get: T = value
def set(x: T): unit = { value = x }
}
AbsCell类既没有类型参数也没有值参数,而是定义了一个抽象类型成员T和一个抽象值成员init。我们可以通过给出这两个成员的具体定义来对这个类型进行实例化。例如:
val cell = new AbsCell { type T = int; val init = 1 }
cell.set(cell.get * 2)
这里,cell的类型是AbsCell { type T = int },也就是AbsCell被{ type T = int }细化(refinement)而形成的类型。访问cell值的代码认为其类型别名cell.T=int,因此上面第二条语句是合法的。
分享到:
相关推荐
scala作为脚本运行 2 scala编译运行 2 scala IDE开发环境 2 scala特点 3 数据类型 3 字符串 4 变量 4 标识符 5 操作符 5 块表达式与赋值 5 控制结构 6 函数 8 类(class)和对象(object) 14 抽象类和抽象成员 17 继承...
”本教程概述了Scala强大的类型系统及函数式编程功能如何提供一个出色的画布,以处理微服务组合及其产生的问题。我们还将重点讲述模型驱动的开发样式。微服务通常实施一个有界上下文,这是来自域驱动的设计概
内容包括: Scala语言概述、运算符、程序流程控制、数据结构之集合、Map映射、过滤、化简、折叠、扫描、拉链、视图、并行集合、高阶函数、函数柯里化、偏函数、参数推断、控制抽象、Trait、面向对象编程、异常处理、...
java容器源码与Docker的...第四章和第五章将示例Scala WebApp与Jenkins服务器结合在一起。 下一章将提供我们在Amazon Web Service上运行服务的经验。 我们在其他章节中添加了结论和未解决的问题。 作者 作者:MichaelK
RDD(Resilient Distributed Dataset)叫做弹性分布式数据集,是Spark中最基本的数据抽象,它代表一个不可变、可分区、里面的元素可并行计算的集合。在 Spark 中,对数据的所有操作不外乎创建 RDD、转化已有RDD 以及...
java原始代码添加自动Java程序记录器(用Scala写) 团队成员:Abdullah Aleem和Muhammad Maaz Khan 概述 该项目是一个工具程序,它使用语法正确的Java文件,并使用Eclipse Java抽象语法树解析器来解析,重写和记录...
概述 Cats是一个库,为使用功能编程提供了抽象。 这个名字是单词类别的一个好玩的缩写。 Scala支持面向对象和功能编程,这在标准库的混合方法中得到了体现。 猫致力于提供功能性编程抽象是核心,,,和。 Cats的更...
这些是我在2014年Scala Exchange和2015年阿姆斯特丹ScalaDays上的演讲的幻灯片和代码示例。该演讲是关于使用函数式编程概念设计库代码所涉及的思维过程的入门级讨论。 概述的基本思想过程如下: 定义最小,最简单...
概述 请记住:在下面的链接中,请使用真实的AWS帐户(例如inventale dev沙箱),而不要假冒{9999999} 该项目包含Scala WeatherToParquetJob作业,以使用将数据从样本转换为镶木地板并将其存储到s3存储桶。 代码...
它旨在使扑扑/Dart开发人员可以使用两种最受欢迎的模式和抽象: Either和Option ,主要用于FP语言,例如Scala,Haskell,OCaml,... 安装 支持零安全性的预发行版本 pub上的包链接在pubspec.yaml依赖项中添加 ...
此过程称为构建eDSL(嵌入式领域特定语言)并对其进行解释,并且在功能语言(例如Haskell,Scala,OCaml)中得到了广泛使用。 尽管如此,对于许多JS / TS开发人员来说,这个主题还是一个未知数。 在本研讨会上,我...
概述 本项目的要求是: 一个检测程序,它采用一些 Java 应用程序的语法正确的源代码,并使用 Eclipse Java 抽象语法树 (AST) 解析器将此应用程序解析为 AST 对于每个作用域中的每个表达式和语句,程序将插入一个检测...