我会简明扼要地说:
val pvSchema = RecordType.like(
's ->> "" ::
'l ->> Long.MaxValue ::
HNil
)
type PossibleValue = pvSchema.Union
val v = Coproduct[PossibleValue]('s -> "string")
要获得Some[String]
我可以使用v.get('s)
,而v.get('i)
会返回None
。我可以以某种方式v.unconditionalGet()
来获取定义的值而不检查所有其他可能性吗?
答案 0 :(得分:2)
事实证明我的问题有点不正确。因为我们处理的是union类型,所以在不事先知道它的类型的情况下得到一些结果会变成一种废话:一个人不能安全地使用该结果。 E.g:
// suppose this is what I want
val value = v.getPresent()
use(value)
此处use
应该能够同时处理String
和Int
,并且最小上限就像Any
,这意味着不再需要类型安全
我有点重新考虑我的设计,现在一切正常。