符合类型的表现形式为:

class A extends B with C with D with E

应做类似如下形式解读:

class A extends (B with C with D with E)

这正是《scala for the impatient》这本书上的内容,我下面的理解也基本源于这本书。

T1 with T2 with T3 …

这种形式的类型称为复合类型(compound type)或者也叫交集类型(intersection type)。

跟结构类型类似,可以在一个方法里声明类型参数时使用复合类型:

scala> trait X1; trait X2;scala> def test(x: X1 with X2) = {println("ok")}
test: (x: X1 with X2)Unitscala> test(new X1 with X2)
okscala> object A extends X1 with X2scala> test(A)
ok

也可以通过 type 声明:

scala> type X = X1 with X2
defined type alias Xscala> def test(x:X) = println("OK")
test: (x: X)Unitscala> class A extends X1 with X2scala> val a = new Ascala> test(a)
OK

在上一篇介绍结构类型时也提到过复合类型中也可包含结构类型:

scala> type X = X1 with X2 { def close():Unit }
defined type alias X

复合类型与with关键字相关推荐

  1. 黑马程序员C语言基础(第八天)复合类型(自定义类型)(结构体)、共用体(联合体)、枚举enum、 typedef

    黑马程序员C语言基础(第一天) 黑马程序员C语言基础(第二天) 黑马程序员C语言基础(第三天) 黑马程序员C语言基础(第四天)数据类型 黑马程序员C语言基础(第五天)运算符与表达式.程序流程结构.数组 ...

  2. Golang的基本类型、引用类型、复合类型

    1.基础内置类型: 包括数值类型.字符串类型.布尔类型.数组等除5种引用类型和复合类型外都是基础内置类型.当对这些类型的值进行增加或者删除的时候会创建一个新值,因此当把这些类型的值传递给方法或者函数时 ...

  3. C/C++学习之路_八: 复合类型

    C/C++学习之路_八: 复合类型 目录 结构体 共用体(联合体) 枚举 typedef 1. 结构体 1. 概述 有时我们需要将不同类型的数据组合成一个有机的整体,如:一个学生有学号/姓名/性别/年 ...

  4. c++primer plus 6 读书笔记 第四章 复合类型

    目录 第4章复合类型 4.1 数组 4.1.1 4.1.2 数组的初始化规则 4.1.3C ++数组初始化方法使用{} 赋值,禁止缩窄转换. 4.2 字符串 4.2.1 拼接字符串常量 4.2.2 在 ...

  5. 【C++ Primer Plus】第4章 复合类型

    目录 [数组] [C- 字符串] 字符串的输入 字符串拼接 字符串常用函数 [数组长度] [string类] 原始字符串 [struct 结构简介] [枚举] [指针和自由存储空间] 使用new分配内 ...

  6. c++ 复合类型 读书笔记(二)

    目录 String类 string拼接 赋值 struct 结构数组 结构中的位字段 共用体(union) 枚举(enum) 设置枚举量的值 枚举量的取值范围 指针与c++基本原理 声明和初始化指针 ...

  7. 一起Talk IOS吧(第八回 OC中复合类型的代码演示)

    看官们,我们在第三回中介绍了OC中的复合类型,有看官说介绍的不够详细,因此我使用图形的方式对所有基本类型做了总结,请参考以下图片中的内容. 看完类型的总结后,我们将通过具体的代码来演示如何使用这些类型 ...

  8. C++ Primer Plus 学习笔记(第 4 章 复合类型)

    C++ Primer Plus 学习笔记 第 4 章 复合类型 数组 数组(array)是一种数据格式,能够存储多个同类型的值. 要创建数组,可使用声明语句.数组声明应指出以下三点: 存储在每个元素的 ...

  9. 第 4 章 复合类型

    目录 4.1 数组 4.1.1 程序说明 4.1.2 数组的初始化规则 4.1.3 C++数组初始化方法 4.2 字符串 4.2.1 拼接字符串常量 4.2.2 在数组中使用字符串 4.2.3 字符串 ...

最新文章

  1. 如何对软件项目团队成员进行角色和岗位的划分
  2. C# 系统环境变量读取
  3. c语言程序设计实验实训教程公众号,C语言程序设计基础知道答案公众号
  4. 【BZOJ4300】绝世好题,位运算相关DP
  5. FilterAttribute过滤器的 执行顺序
  6. Bailian4137 最小新整数【Ad Hoc】
  7. 仿射解密c语言程序实验报告,仿射加密解密 - 依姆哣特的个人空间 - OSCHINA - 中文开源技术交流社区...
  8. 简单总结手机app测试,弱网测试
  9. vscode extensions
  10. 三星SOC的显示控制器及framebuffer驱动s3c-fb.c中probe函数分析
  11. python 实现dcmtk关联pacs功能 推送下拉影像
  12. 抽签抽奖小程序小工具(jquery+html)只需浏览器运行xlsx.core.min.js
  13. 快速找出bug的几点建议
  14. 中考考试的指令广播_2016中招考试广播指导语
  15. 2022年全球程序员收入报告出炉:国内程序员人均56w年薪。。网友说:我拖后腿了!...
  16. TINA导入Ti官网器件
  17. 从零开始搭建仿抖音短视频APP-后端开发粉丝业务模块(2)
  18. 笔记1之极大值分布问题
  19. C#扩展(2):Random的扩展
  20. SSM配置地狱?一篇整合模板迅速解决!【建议收藏】

热门文章

  1. 中国人民公安大学(PPSUC) 网络对抗技术作业
  2. x的四次方+1因式分解
  3. 网络管理技术的亮点以及下一步发展趋势
  4. 胡立阳:如何判断股价见底
  5. 【线性代数】三、特征值和特征向量
  6. 2021.04.29删点成林
  7. 系统初始化状态编写saltstack
  8. Android-Git使用教程
  9. 史上最全的xpath定位方法
  10. oracle数据库时,Oracle数据库夏令时问题解答