【问题标题】:Scala case class type issueScala案例类类型问题
【发布时间】:2018-06-02 17:40:32
【问题描述】:

我正在尝试理解一些我被给予调试的 Scala 代码,以及为什么它不能按预期工作。 (ps newbe alert wrt wrt Scala)。

case class ColNmbr(colNmbr: Int)

def getValidColumns(m: Matrix): List[ColNmbr] = {
    var l1 = matrix.zipWithIndex
    var l2 = l1.filter(tp => !checkCol(tp._1)).map(_._2)
    println("result:" + l2)

    l2
}   

矩阵只是一个列表的列表。

该代码应该返回所有矩阵列的列索引列表,这些列索引通过了返回布尔值的有效性检查。与 println 一样,数据是正确的,但存在类型错误,因为 l2 是 List[Int] 而不是 List[ColNmbr]。我无法更改案例类,那么如何让类型匹配?

【问题讨论】:

  • Return a list of user defined class type Scala 的可能重复项。是来自一些目前正在运行的 Scala 在线课程还是什么?还是只是一个奇怪的巧合?
  • 如果您想对您的代码进行最小的调整,只需将您的 map 替换为 map(t => ColNmbr(t._2))
  • 是的,可以看到相似之处,但只是巧合。无论如何更喜欢我的解决方案。但是非常感谢 - 成功了。
  • checkColMatrix.zipWithIndex 在哪里?
  • 它们都在同一个对象中。 “checkCol”只是一个带有布尔返回的健全性检查。

标签: scala


【解决方案1】:
case class ColNmbr(colNmbr: Int)

def getValidColumns(m: Matrix): List[ColNmbr] = {
    var l1 = matrix.zipWithIndex
    var l2 = l1.filter(tp => !checkCol(tp._1)).map(_._2)
    println("result:" + l2)

    l2.map(ColNmbr)
}  

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多