Scala Universe 设计中的类型边界
Type bounds in Scala Universe design
我断断续续地使用 Scala macro/reflection/compiler 系统工作了相当长的时间。一方面我无法理解:为什么 scala.reflect.api.Universe
(和其他一些地方)中的所有类型都使用边界定义?
例如:
type Position >: Null <: api.Position { type Pos = Universe.this.Position }
或
type PackageDef >: Null <: Universe.PackageDefApi with Universe.MemberDef
这是怎么回事?
我将这个问题发布到 Scala Gitter 频道并收到了 Paul Phillips 的以下回复(转述)。
Null
上的下限类型 >:
允许将所有类型设置为 null
。
这是Scala编译系统面向API的public。它是由预先存在的 类.
逆向工程创建的
我断断续续地使用 Scala macro/reflection/compiler 系统工作了相当长的时间。一方面我无法理解:为什么 scala.reflect.api.Universe
(和其他一些地方)中的所有类型都使用边界定义?
例如:
type Position >: Null <: api.Position { type Pos = Universe.this.Position }
或
type PackageDef >: Null <: Universe.PackageDefApi with Universe.MemberDef
这是怎么回事?
我将这个问题发布到 Scala Gitter 频道并收到了 Paul Phillips 的以下回复(转述)。
Null
上的下限类型>:
允许将所有类型设置为null
。这是Scala编译系统面向API的public。它是由预先存在的 类.
逆向工程创建的