【问题标题】:Scala returning List[Int] when calling .head on listScala 在列表上调用 .head 时返回 List[Int]
【发布时间】:2016-07-16 05:48:24
【问题描述】:

我正在尝试获取列表的头部元素,然后将值作为选项返回。当我使用list.headOption 时出现类型不匹配错误,说list.headOption 返回found: Option[List[Int]] required: Option[Int]

函数如下:

def valueAt(row: Int, col: Int): Option[Int] = {
    val res = available.get((row, col))
    print(res)
    if (res.size == 1){
      res.headOption
    } else {
    None
  }
  }

我也尝试将res.headOption 替换为Some(res.head),但我得到了同样的错误。我真的迷路了,因为我知道.head 返回列表的第一个元素。

【问题讨论】:

  • available.get((row, col)) 的类型是什么?我敢打赌这是List[List[Int]],尝试注释res
  • 我们需要可编译的代码来回答这个问题。这里没有足够的信息来了解这些类型是什么。

标签: list scala optional


【解决方案1】:

可能是available.get((row, col)) 它返回一个List[List[Int]]。在这种情况下,第一个元素将是 List[Int],或者您使用 .headOptionOption[List[Int]]

您可以通过 res.flattenList[List[Int]] 转换为 List[Int],但您可能应该更改 available.get((row, col)) 的返回类型

【讨论】:

    猜你喜欢
    • 2017-11-05
    • 1970-01-01
    • 2011-07-01
    • 1970-01-01
    • 1970-01-01
    • 2016-09-07
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多