Scala类型 9:自身类型 & this别名

自身类型(self type)
格式:this: T =>

trait A { this: Exception => }

this也可替换为self或其它不是关键字的别名。
指定可以混入的类的超类。这个特质只能混入给定类型的子类中。
注:特质extends一个类时,可以保证其混入的类都是该类的子类;而特质指定自身类型时,可以保证它只能混入该类的子类。

class A {this: Exception =>
}

class中的自身类型让类抽象了-该类在实例化时必须满足Exception;相当于构造一个复合类型(A with Exception)。
通常情况,自身类型(self type)是在特质(trait)中的。

自身类型声明为复合类型:

this: X with Y with Z =>

自身类型声明为结构类型:

this: { def close: Unit } =>

this 别名
格式:self =>

class A { self =>  // this alisa
    val x = 2 def foo = self.x + this.x 
}

“self”可以为除this&关键字外的任何字符;因其只是this的别名而已,this也是可以使用的;两者是等价的。
  self => 这种写法只是自身类型的一种特殊方式。

转载于:https://my.oschina.net/sean1984/blog/390999

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值