gpt4 book ai didi

scala - 防止在 Scala 中隐式调用 0 元函数

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

我被一个生产错误扼杀了,我将一个不纯的 0 元函数传递给一个错误地期望一个裸结果类型的类。

def impureFunc(): Future[Any] = ???

case class MyService(impureDependency: Future[Any] /* should have been () => Future[Any] */)

实际上,这使得 MyService立即调用 impureFunc并在程序的生命周期内缓存第一个结果,这导致了一个非常微妙的错误。

通常,类型系统可以防止此类错误,但由于能够在没有参数列表的情况下调用 0 元函数,编译器接受了该程序。

显然,这是 Scala 的一个“特性”,旨在使代码看起来更干净,但这是一个糟糕的问题。有什么方法可以使它成为编译器警告或 linting 错误?换句话说,不批准 implicit method conversion 的“空应用程序”类型?

最佳答案

从这里的评论来看,这种行为似乎是 deprecated with a warning in 2.12并且应该在 2.13 中成为错误。所以似乎答案是使用 -deprecation -Xfatal-warnings升级后。

关于scala - 防止在 Scala 中隐式调用 0 元函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46309566/

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