据我所知,Scalaz \/没有get方法.有时我确信包含的值\/是正确的值,我不想使用getOrElse.我想直接得到它.
("3".right[Int]) getOrElse("123123123") // 3
if (t.isRight) t.get // compilation error, no get method
如果有保证,我怎样才能直接获得正确的价值.
我有两种方法可以获得价值,但两者看起来都有点冗长.
1:更改为scala
val t = "3".right[Int]
val either = t.toEither
if (either.isRight) either.right.get
else either.left.get
2:使用getOrElse
("3".right[Int]) getOrElse("123123123") // but for some cases I don't have this default value
没有get因为get 可以抛出异常,这并不酷.Scalaz通过不允许直接访问该值来强制执行此操作.
如果您提供更多信息,我们可以提供解决方案.
t should be safe.
val safe_thing:T = ???
val either: Throwable \/ T = getFromSomewhere
either getOrElse safe_thing