Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/video/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Scala 如何获取副产品实例的单个已定义元素?_Scala_Shapeless - Fatal编程技术网

Scala 如何获取副产品实例的单个已定义元素?

Scala 如何获取副产品实例的单个已定义元素?,scala,shapeless,Scala,Shapeless,我将简明扼要地说: 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。我是否可以

我将简明扼要地说:

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()
来获得定义的值?

结果表明,我的问题一开始就有点不正确。因为我们处理的是联合类型,所以在事先不知道它的类型的情况下得到一些结果就成了一种废话:不能安全地使用该结果。例如:

// suppose this is what I want
val value = v.getPresent()

use(value)
这里的
use
应该能够处理
String
Int
,其最小上限类似于
Any
,这意味着不再需要任何类型安全性


我已经重新考虑了我的设计,现在一切正常。

你认为
v.unconditionalGet
的结果类型是什么?@Miles,我知道了。实际上,我正在将
copproduct
映射到一对
(String,String)
(Int,String)
,我意识到我只对元组的第二部分感兴趣,所以我刚刚重写了那部分。不管怎样,我喜欢评论中的问题回答问题:)如果我删除这个问题是否正确?@cds:我会说,你应该自己回答这个问题,解释你的想法,而不是删除。