使用解析器组合器列表相等

发布于 2024-11-19 21:10:05 字数 844 浏览 2 评论 0原文

我从这里获取了一些 Scala CSV 解析代码:

使用 Scala 解析器组合器解析 CSV 文件

然后我尝试为其编写一个基本测试:

assertEquals(List(List()), CSV.parse(""))

这失败了,并显示消息:

java.lang.AssertionError:预期: scala.collection.immutable.$colon$colon 但是是: scala.collection.immutable.$colon$colon

有什么想法吗? CSV.parse 的输出是一个空的 List[List[String]] 但似乎具有与 List(Nil) 或 ListList[String] 等不同的 hashCode。我似乎找不到任何方法来组成一个列表等于 CSV.parse("") 的输出。

更新:

这是使用 REPL 的失败:

scala> assertEquals(List(Nil), CSV.parse("")) 
java.lang.AssertionError: expected: scala.collection.immutable.$colon$colon<List(List())> but was: scala.collection.immutable.$colon$colon<List(List())>

I've grabbed some Scala CSV parsing code from here:

Use Scala parser combinator to parse CSV files

And then I tried to write a basic test for it:

assertEquals(List(List()), CSV.parse(""))

And this fails, with message:

java.lang.AssertionError: expected: scala.collection.immutable.$colon$colon but was: scala.collection.immutable.$colon$colon

Any ideas? The output from CSV.parse is an empty List[List[String]] but seems to have a different hashCode than List(Nil) or ListList[String] etc. I can't seem to find any way to compose a list which is equal to the output of CSV.parse("").

UPDATE:

Here is the failure using REPL:

scala> assertEquals(List(Nil), CSV.parse("")) 
java.lang.AssertionError: expected: scala.collection.immutable.$colon$colon<List(List())> but was: scala.collection.immutable.$colon$colon<List(List())>

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

寻找我们的幸福 2024-11-26 21:10:06

编辑:我尝试了您在链接中提供的解析器:

scala> CSV.parse("")
res7: List[List[String]] = List(List(""))

所以显然,它不会返回带有空列表的列表,而是返回带有空字符串列表的列表。所以你的测试应该失败。

Edited: I tried the parser you supplied in the link:

scala> CSV.parse("")
res7: List[List[String]] = List(List(""))

So apparently, it doesn't return a List with an empty List, but a List with a List with the empty string. So your test should fail.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文