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 => 这种写法只是自身类型的一种特殊方式。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值