gpt4 book ai didi

scala - `Seq.contains` 在类型不匹配时失败的替代方法是什么?

转载 作者:行者123 更新时间:2023-12-04 16:57:31 25 4
gpt4 key购买 nike

与此类似 Scala: Why does Seq.contains take an Any argument, instead of an argument of the sequence type?

如果你这样做Seq(1, 2, 3).contains("dasdas")
这将编译并始终返回 false。是否有替代方法会引发类型错误?
这似乎是 contains 的主要问题。总是返回 false并且在代码审查中非常容易错过。

最佳答案

您可以启用 -Xfatal-warnings-Ywarn-infer-any使其在类型不匹配时失败。
这也适用于平等检查 == .

这是我在 build.sbt 中使用的示例避免像您遇到的奇怪的 Scala:

scalacOptions ++= Seq(
"-deprecation",
"-explaintypes",
"-feature",
"-language:higherKinds",
"-unchecked",
"-Xcheckinit",
"-Xfatal-warnings",
"-Xfuture",
"-Xlint",
"-Yno-adapted-args",
"-Ypartial-unification",
"-Ywarn-dead-code",
"-Ywarn-inaccessible",
"-Ywarn-infer-any",
"-Ywarn-nullary-override",
"-Ywarn-nullary-unit",
"-Ywarn-numeric-widen",
"-Ywarn-unused"
) ++ (
if (scalaVersion.value.startsWith("2.11")) Seq.empty
else Seq("-Ywarn-extra-implicit")

罗伯·诺里斯 (Rob Norris) 发表了一篇关于这些的精彩文章:
https://tpolecat.github.io/2017/04/25/scalac-flags.html

仅供引用:通用平等将被 Scala 3 中的多元平等取代,以解决您的问题:
http://dotty.epfl.ch/docs/reference/contextual/multiversal-equality.html

关于scala - `Seq.contains` 在类型不匹配时失败的替代方法是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56944322/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com