不可能有像这样隐式成员的结构类型吗?
type Foo = { implicit val fooMsg: String }
感谢。
答案 0 :(得分:3)
这是一个不错的选择。
优化仅采用声明并输入defs -
http://www.scala-lang.org/files/archive/spec/2.11/03-types.html#compound-types
和修饰符限定模板语句中的decls和defs。
优化可以明显覆盖(精炼),但也不允许override
。
答案 1 :(得分:1)
即使你真的以一种棘手的方式定义它 - 它也不会看到差异:
scala> val a = new { implicit val fooMsg: String = "a" }
a: AnyRef{implicit val fooMsg: String} = $anon$1@7b7b04e9
scala> var b = a
b: AnyRef{implicit val fooMsg: String} = $anon$1@7b7b04e9
scala> b = new { implicit val fooMsg: String = "v" }
b: AnyRef{implicit val fooMsg: String} = $anon$1@7c8adf94
scala> b = new { val fooMsg: String = "v" }
b: AnyRef{implicit val fooMsg: String} = $anon$1@30cff762
scala> b = new { val fooMsgg: String = "v" }
<console>:9: error: type mismatch;
found : AnyRef{val fooMsgg: String; val fooMsgg: String}
required: AnyRef{implicit val fooMsg: String}
b = new { val fooMsgg: String = "v" }
^
对我来说似乎是一个错误:SI-9085。