是否可以在運行時從 Refined 變數的謂詞/見證中提取邊界?類似于以下內容。
// Should return L as a Double
def getLowerBound[L, H](v: Refined[Double, Interval.Closed[L, H]]): Double = ???
val v: Refined[Double, Interval.Closed[0.5, 1.0]] = 0.94
val lowerBound = getLowerBound(v)
lowerBound shouldBe 0.5
uj5u.com熱心網友回復:
你可以使用一個型別系結來告訴編譯器L將是一個Double,然后使用ValueOf typeclass來提取字面量型別的值;像這樣:
def getLowerBound[L <: Double, H](v: Refined[Double, Interval.Closed[L, H]])
(implicit ev: ValueOf[L]): Double =
ev.value
您可以看到這里運行的代碼。
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/450962.html
上一篇:ScalaIf和For回圈問題
