【发布时间】:2021-01-14 01:15:44
【问题描述】:
type mismatch;
found : String => Int
required: java.util.function.ToIntFunction[_ >: String]
我真的希望在人们写下“下一件大事”之前,他们有一些语言专家可以向他们解释错误消息可能是两件事之一
- 无意义的代码
- 一个完整的句子,向不懂该语言的人解释问题。
理性的存在,如果你理解语言(例如阅读手册),那么你只需要一个错误代码。但是如果你不懂语言(即首先会收到错误消息的人),那么你需要一个完整的句子,包括解释、示例问题和解决方案。
考虑节省的时间 - 所有可能犯错误的开发人员的总时间 - 与时间成本(开发人员 + 语言专家用示例编写解释性句子)。
【问题讨论】:
-
@bharal Minimal, Reproducible Example 会比哲学部分更有帮助。
-
@bharal “为什么不让语言变得更好呢?” 什么对你更好?错误很明显,你有一个
String => Int,你需要一个java.util.function.ToIntFunction[_ >: String],如果你不理解两个类之间的区别,那么世界上没有错误消息可以帮助你。 - “所有必须学习一些未解释的任意逻辑的开发人员” 想表达在此示例中存在哪些未解释的任意逻辑? - “写更清晰解释的时间损失”这并不像你想象的那么容易,但给我一个更好的信息 -
@bharal 实际上,自 2.12-2.13 以来,语言已经得到了改进,这应该可以工作。只是您使用的不是最新版本(或者可能由于库依赖关系而无法使用最新版本)。
-
@bharal 所以你不会区分 Java 语言(如 Scala)、Java 字节码和 Java 虚拟机。
-
@bharal “错误可以举例说明什么会导致这样的消息,以及如何解决它。”错误指向导致这样的确切行信息;提供任意示例不仅非常困难,而且大多无用,因为您的具体代码失败了。关于如何修复它,同样在非常复杂的一般意义上,可能有无数种解决方案;但是,如果您愿意,可以搜索名为 typed hole 的东西,它与您想要的有点接近。
标签: scala types type-mismatch scala-java-interop