Scala这个别名和自我类型
发布时间:2020-12-16 10:02:18 所属栏目:安全 来源:网络整理
导读:这个别名和自我类型之间有什么关系吗? 这种别名是自我类型的特例吗? 在 scala 2nd P776的编程中,作者说: abstract class Parser[+T] extends … { p = You saw syntax like this in Section 29.4,where it was used to give a self type to a trait. 但是
这个别名和自我类型之间有什么关系吗?
这种别名是自我类型的特例吗? 在 scala 2nd P776的编程中,作者说:
但是,self类型的语法看起来不像这样,它就像:
另一个问题是为什么这种混叠有用?我不明白给这个引用添加别名是有意义的,因为它已经是当前对象引用的传统别名,但是在Play框架源代码中,我看到了很多代码(特别是anorm部分),如:
为什么这有意义? 解决方法
您可以同时拥有自我类型和此别名:
abstract class Parser[+T] { p: SomeAssumedType => … } 如果您不包含类型归属,Scala将假定变量的类型是周围类的类型,因此为您提供了一个简单的别名. 如果将此名称与ascription一起保留,则Scala希望您以能够实现归属的方式初始化此类. 至于这个别名.以下是需要这种情况: object OuterObject { outer => val member = "outer" object InnerObject { val member = "inner" val ref1 = member val ref2 = this.member val ref3 = outer.member def method1 = { val member = "method" member } def method2 = { val member = "method" this.member } def method3 = { val member = "method" outer.member } } } scala> OuterObject.InnerObject.ref1 res1: java.lang.String = inner scala> OuterObject.InnerObject.ref2 res2: java.lang.String = inner scala> OuterObject.InnerObject.ref3 res3: java.lang.String = outer scala> OuterObject.InnerObject.method1 res4: java.lang.String = method scala> OuterObject.InnerObject.method2 res5: java.lang.String = inner scala> OuterObject.InnerObject.method3 res6: java.lang.String = outer (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |