如何从Scala的WartRemover工具修复产品类型推断错误

may*_*r86 9 scala type-annotation scala-2.11

我正在使用WartRemover工具来避免Scala 2.11代码中可能出现的错误.

具体来说,我想知道如何修复" 产品类型推断 "错误.

看看repo文档,我只能看到失败的例子,但我想知道我是如何修复这个错误的:

https://github.com/puffnfresh/wartremover#product.

做我的作业,我最后得到这个解释如何修复Type Inference Failures错误的其他链接https://blog.cppcabrera.com/posts/scala-wart-remover.html.我引用" 如果您看到下面的任何警告,修复通常就像提供类型注释一样简单 ",但我不明白这意味着什么.我真的需要一个具体的例子.

lmm*_*lmm 6

Product是一个非常抽象的高级类型,约束很少.当推断类型是Product,这通常表明你犯了一个错误.例如,如果你有:

List((1, "hi", 0.4f), (2, "bye"), (3, "aloha", 7.2f))
Run Code Online (Sandbox Code Playgroud)

然后这将编译好,给你一个List[Product].但是,就像Any推断时一样,这可能是一个错误 - 你可能意味着它是一个List[(Int, String, Float)]并且意味着在中间元组中有第三个条目.

如果你真的想要a List[Product],你可以通过明确地给出type参数来避免得到它的警告:

List[Product]((1, "hi", 0.4f), (2, "bye"), (3, "aloha", 7.2f))
Run Code Online (Sandbox Code Playgroud)