小编Nic*_*ton的帖子

将 Ei 的 HList 转换为 HList 的任一个

我想定义一个函数,它接受一个 ,HList其元素是这样的,对于每个元素t,都有一个类型T使得t: Either[String, T]. 我们将调用的函数validate应具有以下行为:

  • 如果参数的所有元素都是Right,则返回Right右投影映射参数的结果。
  • 否则,返回 a Left[List[String]],其中列表包含Left参数中每个的左投影。

例子:

validate (Right (42) :: Right (3.14) :: Right (false) :: HNil)
>> Right (42 :: 3.14 :: false :: HNil)
Run Code Online (Sandbox Code Playgroud)
validate (Right (42) :: Left ("qwerty") :: Left ("uiop") :: HNil)
>> Left (List ("qwerty", "uiop"))
Run Code Online (Sandbox Code Playgroud)

一个示例用例:

case class Result (foo: Foo, bar: Bar, baz: Baz, qux: Qux)

def getFoo: Either[String, Foo] = …
Run Code Online (Sandbox Code Playgroud)

scala shapeless

3
推荐指数
1
解决办法
228
查看次数

标签 统计

scala ×1

shapeless ×1