gpt4 book ai didi

scala - 为什么 Scalaz\/类型有 getOrElse 但没有 get?

转载 作者:行者123 更新时间:2023-12-05 01:02:27 24 4
gpt4 key购买 nike

据我所知 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

关于scala - 为什么 Scalaz\/类型有 getOrElse 但没有 get?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26521275/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com