2
具体值给出:构建列表与在编译时
case class Foo(x: BigDecimal)
我想,在编译时,构建一个List[Foo]
每个Foo
必须有5
一个BigDecimal值。
所以,我希望下面的代码进行编译:
type Foo5Only = ???
val foos5: List[Foo5Only] = List(Foo(5), Foo(5))
但是,我期望下无法编译:
val bad: List[Foo5Only] = List(Foo(42))
我猜测,一个shapeless
单身类型可能很有用,但我实际上并没有理解它。
注 - 我对这个问题没有兴趣,导致使用Either
或Option
。
需要BigDecimal吗? (否则,你可能可以使用'Nat'和参数化'Foo') –
@MichaelZajac - 是的,'Nat'会工作,谢谢。对于我自己的学习,Singleton类型是否适用于此 - 作为“Nat”的替代方案? –