【问题标题】:Scala Option[String] map turns in IterableScala Option[String] map 变成 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/…

标签: scala option implicit-conversion iterable


【解决方案1】:

Option 上直接定义了一个implicit conversion called option2Iterable,它将所有Option[A] 转换为具有零个或一个元素的Iterable[A]

一个更短的代码 sn-p 演示了这种有点意外的行为:

(Option(42): Iterable[Int])

它会悄悄地将Option 转换为List,在这种情况下会生成List(42)

【讨论】:

    猜你喜欢
    • 2010-11-06
    • 1970-01-01
    • 1970-01-01
    • 2021-04-04
    • 2020-09-03
    • 1970-01-01
    • 2018-01-17
    • 2017-05-08
    • 2016-07-21
    相关资源
    最近更新 更多