self-type(自身类型)

  • 说明:这里介绍目前为止遇到的情况,当然还有其他情况可能没有列举出来,欢迎提出
  1. 在trait中使用
trait User { 
  def name :String
 }

trait B { 
    this : User => // 这里self-type使用this关键字,也可以是其他任意名字
    def foo() { 
        println(name) 
    }// 同样后边的name也不需要手动增加前缀 this.name,会被识别为this.name。 
  }  
  1. 在使用trait B的时候:这里必须有 with User,否则报 Main.type 不符合 B's selftype B with User
object Main extends B with User {
 override def name = "whj"; 
}
  1. 依赖注入的关系
    后续补充
    可参考链接: http://jonasboner.com/2008/10/06/real-world-scala-dependency-injection-di/
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。