Scala Option[String] map 变成 Iterable
Posted
技术标签:
【中文标题】Scala Option[String] map 变成 Iterable【英文标题】:Scala Option[String] map turns in Iterable 【发布时间】:2019-02-13 19:58:54 【问题描述】:为什么编译:
def foo() : Iterable[URI] =
Some("")
.map(URI.create)
【问题讨论】:
是java.net.URI
吗?
它不会"变成Iterable[URI]
"。表达式Some("path").map(java.net.URI.create)
给出Option[java.net.URI]
。不清楚你在问什么。
是的,我想映射到 uri 并检查它是否存在,然后映射到其他东西
您的问题无法以您在此处发布的形式重现。
只要是import java.net.URI
,就应该创建Option[java.net.URI]
。 URI#create
的返回类型是 URI
本身 - docs.oracle.com/javase/7/docs/api/java/net/…
【参考方案1】:
在Option
上直接定义了一个implicit conversion called option2Iterable
,它将所有Option[A]
转换为具有零个或一个元素的Iterable[A]
。
一个更短的代码 sn-p 演示了这种有点意外的行为:
(Option(42): Iterable[Int])
它会悄悄地将Option
转换为List
,在这种情况下会生成List(42)
。
【讨论】:
以上是关于Scala Option[String] map 变成 Iterable的主要内容,如果未能解决你的问题,请参考以下文章
好程序员大数据教程分享Scala系列之Option_偏函数_String