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」的替代方案? –