为什么80%的码农都做不了架构师?>>>   

类成员的类型取决于成员被引用的方式。主要有三个概念:
1. 类型 T 的基本类型集合
2. 从前缀类型 S 中可见的类 C 中的类型 T
3. 类型 T 的成员绑定集合
以下是这三个概念的详细定义
1. 类 T 的基本类型集合定义如下
 C 是类型 C 以及其父类型 T1,...,Tn 的基本类型,同时也是组合类型 T1
with ... with T
n {R}的基本类型。
 类型别名的基本类型是别名的类型的基本类型
 抽象类型的基本类型是其上界的基本类型
 参数化类型 C[T1,...,Tn]的基本类型是类型 C 的基本类型, C 的每一个类
型参数 ai被对应的参数类型 Ti 代替
 单例类型 p.type 的基本类型是类型 p 的基本类型
 复合类型 T1 with ... with Tn {R}的基本类型是所有 Ti 的基本类型的
缩减合并。意思是设合集 Φ 为 Ti 的基本类型的合集,如果 Φ 包括同一个类
的多个类型实例,比如 Si#C[Ti1,...,Tin](i∈I),那么所有的这些实例
将会被一个与其他一致的实例代替。如果没有这样一个实例存在就会导致错
误。 如果存在这样一个缩减合并,那么该集合会产生类类型的集合,不同的
类型是不同类的实例。
 类型选择 S#T 的基本类型如下确定:如果 T 是一个抽象类或别名,那么前面
的子句就会被应用。否则 T 必须是一个定义在某个类 B 中的(可能还是参数
化的)类类型。那么 S#T 的基本类型就是从前缀类型 S 中看到的 B 中 T 的基
本类型。
 既存类型 T forSome {Q}的基本类型是所有 S forSome {Q}类型, S 是
T 的基本类型
2. 从前缀类型 S 中可见的类 C 中的类型 T 只在以下条件下起作用,前缀类型 S 有一
个类型 C 的类型实例作为基本类型,即 S‟#C[T1,...,Tn]。我们有以下定义
 如果 S = ε.type,那么从 S 看到的 C 中的 T 就是 T 本身
 否则,如果 S 是既存类型 S‟ forSome {Q}, 从 S‟看 C 中的 T 将会是 T‟,
那么从 S 看 T 中的 C 将会是 T‟ forSome {Q}
 否则,如果 T 是某类 D 的第 i 个类型参数,那么
 如果 S 有基本类型 D[U1,...,Un], [U1,...,Un]是类型参数,那么从
S 中看到的 C 中的 T 就是 Ui
 否则,如果 C 定义在类 C‟中,那么从 S 中看到的 C 中的 T 与在 S‟中看
到的 C‟中的 T 是一样的
 否则,如果 C 不是定义在其他类中,那么从 S 中看到的 C 中的 T 就是 T
本身
 否则,如果 T 是某类 D 的单例类型 D.this.type,那么
 如果 D 是 C 的子类, S 的基本类型中有一个类 D 的类型实例,那么从 S
中看到的 C 中的 T 就是 S
类型
23
 否则,如果 C 定义在类 C‟中,那么从 S 中看到的 C 中的 T 与 S‟中看到
的 C‟中的 T 相同
 否则,如果 C 不是定义在其他类中,那么从 S 中看到的 C 中的 T 就是 T
本身
 如果 T 是其他类型,那么将在所有其类型组件中执行以上描述的映射
如果 T 是一个可能参数化的类类型, T 的类定义在某个类 D 中, S 是某前缀
类型,那么“从 S 中看到 T”就是“从 S 中看到 D 中的 T 的简写”。
3. 类型 T 的成员绑定集合是(1)T 的基本类型中存在某类的类型实例和 C 中 d‟的定
义或声明( d 是将 d‟中的类型 T‟替换为从 T 中看到的 C 中的 T‟得到的结果)等
绑定(2)类型修饰的绑定(§3.2.7)(如果有的话)。
类型映射 S#t 的定义就是 S 中类型 t 的成员绑定 dt。在此情况下,我们可以说
S#t 由 dt定义。

了解更多详情请登录超人学院网站http://www.crxy.cn?sxy或者关注超人学院微信号:CRXY-CN

转载于:https://my.oschina.net/crxy/blog/707220

scala基本类型和成员定义相关推荐

  1. scala 基本类型和操作

    Scala基本类型 Scala中的基本数据类型如下图:  (来源:Programming in scala) 从上表中可以看出,Scala的基本数据类型与Java中的基本数据类型是一一对应的,不同的是 ...

  2. java面向对象(类与对象,局部变量成员变量,基本类型和引用类型作为参数传递)...

    一.类和对象的区别 类是对某一类事物的抽象描述,而对象用于表示现实中该类事物的个体 可以将玩具模型看作是一个类,将一个个玩具看作对象,从玩具模型和玩具之间的关系便可以看出类与对象之间的关系.类用于描述 ...

  3. java 定义变量时 赋值与不赋值_探究Java中基本类型和部分包装类在声明变量时不赋值的情况下java给他们的默认赋值...

    探究Java中基本类型和部分包装类在声明变量时不赋值的情况下java给他们的默认赋值 当基本数据类型作为普通变量(八大基本类型: byte,char,boolean,short,int,long,fl ...

  4. java包装类和基本类型谁先谁后_你知道Java中基本类型和包装类的区别吗

    前情提要 上一篇中,通过一道常见的面试题(即:String.StringBuilder.StringBuffer的区别),引申到Java中基本类型和包装类的相关内容.在这一篇中,我们将解决上一篇中引申 ...

  5. Java Native Interface 二 JNI中对Java基本类型和引用类型的处理

    本文是<The Java Native Interface Programmer's Guide and Specification>读书笔记 Java编程里会使用到两种类型:基本类型(如 ...

  6. 对象在内存中的存储基本类型和包装类java类型转换

    对象在内存中的存储 对象头.实例数据和填充数据(为了对齐) 实例变量:存放类的属性数据信息,包括父类的属性信息,如果是数组的实例部分还包括数组的长度,这部分内存按4字节对齐. 填充数据:由于虚拟机要求 ...

  7. java包装类和基本类型_你知道Java中基本类型和包装类的区别吗

    前情提要 上一篇中,通过一道常见的面试题(即:String.StringBuilder.StringBuffer的区别),引申到Java中基本类型和包装类的相关内容.在这一篇中,我们将解决上一篇中引申 ...

  8. Java的数据类型-基本类型和引用类型

    道生一,一生二,二生三,三生万物------老子 二进制是道.基本类型是一.引用类型是二.框架是三.软件应用是万物------小虎哥. 0.基本类型和引用类型的区别 Java中的数据类型分为 基本类型 ...

  9. JavaSE(六)包装类、基本类型和字符串之间的转换、==和equals的区别

    一.包装类 Java语言是一个面向对象的语言,但是Java中的基本数据类型却是不面向对象的,这在实际使用时存在很多的不便,为了解决这个不足, 在设计类时为每个基本数据类型设计了一个对应的类进行代表,这 ...

最新文章

  1. 圆角有边框背景色时,背景色溢出问题
  2. 谷歌浏览器禁止右滑返回历史_移动端h5禁用浏览器左滑右滑的前进后退功能
  3. 计算机专业考研末流211和双非,211大学考985研究生难吗,如何看待本科985学生读研去211学校?...
  4. 数据结构---prim最小生成树
  5. 腾讯视频怎么设置全速下载模式
  6. 学习OpenCV2——卡尔曼滤波(KalmanFilter)详解
  7. javascript 公历与农历相互转换工具类
  8. python sphinx_Python Sphinx使用实例及问题解决
  9. oracle数据库标志物,Oracle表的分类以及相关参数的详解
  10. 反射 数据类型_这是一份超全面详细的Java反射机制学习指南
  11. 360网站域名拦截检测 非法网址检测系统原理
  12. 【科技文献检索】CNKI中国知网检索
  13. 日程安排工具Calendso
  14. vs2012窗体嵌入表格_2012年电子表格日
  15. 世界之窗浏览器 java_浏览器部分JavaScript失效如何解决
  16. vue项目使用element-ui插件的安装使用
  17. 杰里之2M 包加入来电铃声和来电报号的问题【篇】
  18. 还在用电脑多控手机?你out了,手机多控手机,全新神器
  19. 【STA】(1)引言
  20. 机器视觉2D点旋转中心标定及旋转后坐标计算

热门文章

  1. LAMP 补充----非原创
  2. Java 面试高频提问知识点一
  3. 玩转SecureCRT 安装
  4. Linux进程间通信(匿名管道)
  5. python调用usb摄像头黑屏_ORB-SLAM2编译安装和USB摄像头例程运行
  6. 如何避免ajax重复请求?
  7. C语言三目运算符用法详解
  8. linux mint安装类型,如何在Linux Mint 16中正确安装Ubuntu One
  9. dockerfile arg_解读三组容易混淆的 Dockerfile 指令
  10. 华为鸿蒙系统发展时间2021年,耗时八年打造国产系统,华为鸿蒙OS质疑声不断,它才是真正未来...