Scala深入浅出进阶经典 第56讲:Scala中Self Types实战详解

来源:互联网 发布:软件代理加盟协议 编辑:程序博客网 时间:2024/05/24 00:50
package com.dt.scalaInAction.demo_056/** * Scala中Self Types实战详解 */class Self {    //用法一:self => 表示this的别名 这是self和this等价   注意不能使用this作为别名    self =>    val tmp = "Scala"    def foo = self.tmp + this.tmp}trait S1class S2 {    /**     * 用法二:     * 这种方式和self =>并不一样  将S1比如为摸个trait是     * 这种this:S1为this的别名时 有一个强制的要求      * (1)在该类型实例化时 必须混入这个类型 即: val c = new S2 with S1 否则报错     * (2)在继承该类的子类是 也必须混入 比如:class S3 extends S2 with S1  若不混入with S1则报错     */    this:S1 =>}class S3 extends S2 with S1trait T {this:S1 =>}object S4 extends T with S1object Self_Types {    def main(args: Array[String]): Unit = {        class Outer {            outer =>            val v1 = "Spark"            class Inner {                /*                 * 用法三:                 * 这里内部类需要访问外部类成员和方法                   * 通过定义了outer =>代替了外部类Outer的this 在内部类理由直接引用不需要考虑this是谁this 这是使用这种方式声明的好处                 *                  * 如果写成println(this.v1)则报错 因为这个this代表了Inner的this                 * 下面的三种写法都是正确的                 */                println(v1)                println(outer.v1)                println(Outer.this.v1)                            }        }        val c = new S2 with S1 //val c: S2 with S1 { .. }    }}


以上内容是从王家林老师DT大数据课程第56讲的学习笔记和个人整理。
DT大数据微信公众账号:DT_Spark
王家林老师QQ:1740415547
王家林老师微信号:18610086859
第56讲视频网站地址:http://pan.baidu.com/s/1i3H6zDb

0 0
原创粉丝点击
热门问题 老师的惩罚 人脸识别 我在镇武司摸鱼那些年 重生之率土为王 我在大康的咸鱼生活 盘龙之生命进化 天生仙种 凡人之先天五行 春回大明朝 姑娘不必设防,我是瞎子 一天睡久了头疼怎么办 在家躺久了头疼怎么办 4周多儿童睡眠差怎么办 6岁儿童睡眠差怎么办 四年级的孩子不会写作文怎么办 四年级的孩子写不出作文怎么办? 欠了三万网贷怎么办 打完篮球浑身疼怎么办 在部队当兵意外死亡了怎么办 派派没有体力瓶怎么办 e记账登录不上怎么办 洁净净化区湿度高怎么办 政府测量土地少算了面积怎么办 北京武警欠我钱怎么办 被小混混打了怎么办 农保地建房子怎么办 WOW7.3到8.0橙装怎么办 90后离婚有孩子怎么办 90后的我们该怎么办 越南和中国结婚怎么办结婚证 改革怎么看走留怎么办事业怎么干 改革怎么看走留怎么办工作怎么干 军改怎么看我该怎么办 改革怎么办我该怎么干 改革怎么看 走留怎么办 腿又粗又弯怎么办 假发发量太多了怎么办 剃了发际线后悔怎么办 在外面遇到坏人抢劫怎么办 请事假单位不批怎么办 捷普请假不批怎么办 钉钉请假不审批怎么办 钉钉请假未审批怎么办 员工事假+工作履责怎么办 员工请事假不批怎么办 哺乳起员工一直请事假怎么办 请公休公司不批怎么办 辞职信交了不批怎么办 辞职年假没有休完怎么办 病假算旷工我该怎么办 辞职信领导不批怎么办