如何解决单例类型作为类型成员
我正在尝试将类型成员定义为单例类型。这是我的尝试:
import shapeless.syntax.singleton._
trait Test{
type Blocked <: Boolean
}
def f(t: Test{ type Blocked = false.narrow }) = ??? // does not compile
def f(t: Test{ type Blocked = false }) = ??? // argument is parsed as t: Test{ type Blocked = Boolean }
有没有办法将类型成员设置为单例类型(在我的例子中为 Boolean(false)
)?
解决方法
def f(t: Test{ type Blocked = false }) = ??? // argument is parsed as t: Test{ type Blocked = Boolean }
Blocked
变成文字单例类型 false
;请注意 f(true)
是如何被拒绝的
scala> trait Test{
| type Blocked <: Boolean
| }
trait Test
scala> val v = new Test { type Blocked = false }
val v: Test{type Blocked = false} = $anon$1@34aa8b61
scala> def f(x: v.Blocked) = x
def f(x: v.Blocked): v.Blocked
scala> f(false)
val res0: v.Blocked = false
scala> f(true)
^
error: type mismatch;
found : Boolean(true)
required: v.Blocked
(which expands to) false
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。