Mun*_* Ar 0 types scala list option scala-collections
考虑到最佳实践,我试图在 Option 中获取值。例如,我有:
val listExample : List[Option[String]] = List(Some("A"), Some("B))
Run Code Online (Sandbox Code Playgroud)
我想访问A和B
一种方式,正在做listExample.head.get = "A",listExample.last.get = "B"
但这不是一个好习惯。怎么办:listExample.headOption.flatten.ToString
这安全吗?
没有好的答案。
.get?问题“如何从期权中获取价值?”的答案 就是简单地使用get。这是确定获得价值的唯一方法。get真的很努力地把它从Option; 您将始终以常规程序流程中的价值结束。这是因为,如果 的任务get是不可能的,那么您的本地程序流将被终止Exception。
大多数人都会同意避免get避免Exception,这通常会导致难以推理的非本地程序行为。
但是你会做什么而不是简单地“get从一个Option”中获取一个值呢?这取决于在以下情况下会发生什么None- 而不是Exception:
例如,如果您有 aList[Option[A]]并且想要 a List[A],只需忽略这些None值,然后执行Option.flatten。
如果您希望仅在存在值时发生副作用(可能取决于该值),请使用Option.foreach.
如果您想获取值(如果存在),或者在存在时获取默认值None,请使用Option.getOrElse.
这个列表可以通过flatMap、map、fold、exists、forall、filter、orElse、 等等来制作更长的时间。
因此,您问题的最终答案是:这取决于……
| 归档时间: |
|
| 查看次数: |
314 次 |
| 最近记录: |