这段代码编译错误斯卡拉 - List.map类型推断错误失败
val kk2: List[(Int, Double)] = (1, 0.5) :: (2, 0.6)
kk2.map((n1, d1) => n1) // compile error
我想名单[诠释,双] =>列表[INT] 我怎样才能解决这个问题?
这段代码编译错误斯卡拉 - List.map类型推断错误失败
val kk2: List[(Int, Double)] = (1, 0.5) :: (2, 0.6)
kk2.map((n1, d1) => n1) // compile error
我想名单[诠释,双] =>列表[INT] 我怎样才能解决这个问题?
两件事。
首先,使用利弊操作::
构建List[(Int, Double)]
,你需要这样的附加列表的元素(例如,你的情况(1, 0.5)
)到已有列表,而不是到另一个元件。换句话说,在::
的右侧必须有一个元组列表,而不仅仅是一个元组,所以将你的(2, 0.6)
元组包装在List
中。注意:List(2, 0.6)
会给你一个两个元素列表,2和0.6,但你想要一个元组列表,所以你需要两对括号:List((2, 0.6))
。正如在评论中正确指出的那样,您也可以以更简洁的方式进行操作,如(1, 0.5) :: (2, 0.6) :: Nil
,这是一种通过仅使用cons运算符定义列表的递归方式(Nil是一个空列表)。第二,当你在一个元组上映射时,你必须使用模式匹配机制的局部函数来踢入或简单地放,你需要case
。
所以:
val kk2: List[(Int, Double)] = (1, 0.5) :: (2, 0.6) :: Nil
kk2.map { case (n1, d1) => n1 } // List(1,2)
你没有说的到底是什么。如果只是推理错误,请添加注释。使用 – Carcigenicate
。 tup => tup._1 – kimyongin
这是错误吗?这看起来不像是一个错误,或者至少不是全部。 – Carcigenicate