我们真的’扩展’scala中的特征吗?
| 
                         
 在学习 
 Scala时,我一直在努力理解一个特殊的细微差别: 
  
  
特质测试 带测试的类Tester //#A:引发编译错误 class Tester扩展Test //#B:工作正常 现在,我们并没有真正扩展这个特性(或者我们是谁?).以下是我的问题: >扩展特质与扩展课程有何不同?它只是一个单一特征的特殊情况语法,我只是接受它作为语言的细微差别? Martin Odersky在对similar question的回应中表示,这是大会,但人们发现它令人困惑.我不确定为什么会出现这种情况或者导致这一决定的问题是什么?但这是他的回答: 
 虽然我可以忍受他的解释并重新思考我的想法(并且看到将课程改为特质的优势,仅仅是设计选择的副作用),我仍然希望更直观地理解这种细微差别. 解决方法
 我可以向你展示一个例子,我觉得“扩展”特征的“概念”实际上是合乎逻辑的, 
  
        使用结构类型和自我引用特征的混合来查看以下代码, type Fooable = {
  def foo(): Unit
}
trait FooableExtra { self: Fooable =>
  def omgWeCanFoo(): Unit = {
    println("foo :: by :: FooableExtra")
    self.foo()
  }
}
class OneThingWithFoo extends FooableExtra {
  def foo(): Unit = {
    println("foo :: by :: OneThingWithFoo")
  }
  def oneThing: Unit = {}
} 
 我不能用语言来解释它,而且更直观一些……但是这就是让我在写A类扩展TraitA时有良心的原因. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!  | 
                  
- scala – 当需要的字段丢失时,是否可以使json4s不抛出异常?
 - 如何将所需的验证应用于角度2的下拉列表
 - 在bash中同时迭代两个数组
 - angularjs – PouchDB 5.3.0 – 错误:数据库位置或iosData
 - Angular 2 / Web Api – json解析错误语法错误意外的输入结
 - angular – Ionic无法找到模块’../providers/auth-service
 - scala – 如何在Naive Bayes模型的BinaryClassificationMet
 - 构建基于CXF的WebService服务(2)-- 利用CXF提供的wsdl2ja
 - Startup- and Shutdown sequence of OpenOffice.org
 - angular – 如何使用* ngFor迭代对象键
 
