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类型

好程序员大数据教程分享Scala系列之Option_偏函数_String

Scala toMap类型转换问题

初学scala1——Option

好程序员大数据教程Scala系列之样例类_Option_偏函数

Scala - 无法解析符号 flatMap