复合类型与with关键字

转载 2015年07月06日 16:26:32

符合类型的表现形式为:

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)Unit

scala> test(new X1 with X2)
ok

scala> object A extends X1 with X2

scala> test(A)
ok

也可以通过 type 声明:

scala> type X = X1 with X2
defined type alias X

scala> def test(x:X) = println("OK")
test: (x: X)Unit

scala> class A extends X1 with X2

scala> val a = new A

scala> test(a)
OK

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

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



plsql复合数据类型

  • 2010年05月27日 16:09
  • 9KB
  • 下载

全面探讨PL SQL的复合数据类型

  • 2009年07月29日 11:22
  • 63KB
  • 下载

DB2数据库查询过程(Query Processing)----复合索引的匹配索引扫描(Matching Index Scans with Composite Indexs)

在《DB2数据库查询过程(Query Processing)----简单索引访问(Simple Indexed Access)》一文中已经对索引访问的各种形式作了详细介绍,本文重点讨论匹配索引扫描...
  • idber
  • idber
  • 2012年11月17日 12:58
  • 3866

hive复合类型使用

  • 2015年10月17日 13:18
  • 3KB
  • 下载

iOS开发-Day16-OC复合&class关键字

为什么需要复合: 某一个复杂的类,需要由多个不同的部分组成,比如电脑需要由主机键盘显示器组成,这时候就可以用到复合,将部分作为主体的实例变量 复合和继承 继承是“is A”关系;复合是“has A...

定义并使用变量,复合类型

  • 2011年06月01日 14:34
  • 36KB
  • 下载

Oracle复合类型之RECORD

  • 2011年12月23日 11:42
  • 14KB
  • 下载

c++ 中的简单复合内置类型 数组

/* * C++中提供了两种类似于ector 和迭代器类型的低级复合类型--数组和指针。现代C++ * 程序尽量使用vector和迭代器类型,而避免使用低级的数组和指针。设计良好的程序 ...

Java标识符、关键字和数据类型

  • 2010年04月26日 22:20
  • 261KB
  • 下载
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:复合类型与with关键字
举报原因:
原因补充:

(最多只允许输入30个字)