Scala选项[String]映射在Iterable中转换

Scala选项[String]映射在Iterable中转换,scala,option,implicit-conversion,iterable,Scala,Option,Implicit Conversion,Iterable,为什么要编译: def foo() : Iterable[URI] = { Some("") .map(URI.create) } 有一个直接在选项上定义的,它将所有选项[A]转换为具有零或一个元素的Iterable[A] 下面是一段短得多的代码片段,它演示了这种有点意外的行为: (Option(42): Iterable[Int]) 它会悄悄地将选项转换为列表,在这种情况下会生成一个列表(42)它是java.net.URI?它不会“变成Iterable[URI]”。表达式S

为什么要编译:

def foo() : Iterable[URI] = {
   Some("")
     .map(URI.create)
}
有一个直接在
选项上定义的
,它将所有
选项[A]
转换为具有零或一个元素的
Iterable[A]

下面是一段短得多的代码片段,它演示了这种有点意外的行为:

(Option(42): Iterable[Int])

它会悄悄地将
选项
转换为
列表
,在这种情况下会生成一个
列表(42)

它是
java.net.URI
?它不会“变成
Iterable[URI]
”。表达式
Some(“path”).map(java.net.URI.create)
提供了一个
选项[java.net.URI]
。不清楚你在问什么。是的,我想映射到uri并检查它是否存在,然后映射到其他东西。你的问题不能以你在这里发布的形式重现。只要这是
导入java.net.uri
,它就应该创建
选项[java.net.uri]
。的返回类型是
URI
本身-