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

标签 scala scala-2.11 type-annotation

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

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

查看存储库文档,我只能看到失败示例,但我想知道如何修复该错误:

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

在做作业时,我最终得到了另一个链接,它解释了如何修复类型推断失败错误 https://blog.cppcabrera.com/posts/scala-wart-remover.html 。我引用“如果您看到下面的任何警告,修复通常就像提供类型注释一样简单”,但我不明白这意味着什么。我真的需要一个具体的例子。

最佳答案

Product 是一种非常抽象的高级类型,几乎没有约束。当推断的类型为 Product 时,通常表明您犯了错误。例如。如果你有:

List((1, "hi", 0.4f), (2, "bye"), (3, "aloha", 7.2f))

然后编译就可以了,给你一个List[Product]。但是,就像推断 Any 时一样,这可能是一个错误 - 您可能希望它是一个 List[(Int, String, Float)] 并且意味着中间元组中的第三个条目。

如果您确实想要一个 List[Product],您可以通过明确给出类型参数来避免收到警告:

List[Product]((1, "hi", 0.4f), (2, "bye"), (3, "aloha", 7.2f))

关于scala - 如何修复 Scala 的 WartRemover 工具中的产品类型推断错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27529366/

相关文章:

java - Spring Security @Secured注解和Scala Controller

Scala:如何使用类型参数化在类内部打印

scala - 您可以在 Scala 中的 for 理解中定义一个值(在 if 中)以便在yield 中使用

scala - 使用 ReactiveMongo 插入后获取 ID

scala - 在 Scala 中对数组进行就地排序

scala-2.11 - 如何从 akka.stream.io.Framing$FramingException 中恢复

scala - 我可以使用@switch 和枚举吗?

python - mypy:无法推断 "map"的类型参数 1

java - 如何在 Java 中使用自定义类型注解

python 3.7 : check if type annotation is "subclass" of generic