我想定义一个函数,它接受一个 ,HList其元素是这样的,对于每个元素t,都有一个类型T使得t: Either[String, T]. 我们将调用的函数validate应具有以下行为:
Right,则返回Right右投影映射参数的结果。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)