结构类型不能包含隐式成员?

时间:2015-01-14 04:33:52

标签: scala

不可能有像这样隐式成员的结构类型吗?

type Foo = { implicit val fooMsg: String }

感谢。

2 个答案:

答案 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