gpt4 book ai didi

scala - 为什么不推荐使用没有参数列表的案例类?

转载 作者:行者123 更新时间:2023-12-03 07:11:29 26 4
gpt4 key购买 nike

为什么 Scala 不推荐使用没有参数列表的案例类?为什么编译器建议使用 () 作为参数列表?

编辑:

有人请回答我的第二个问题...:|

最佳答案

很容易意外地错误地使用无参数案例类作为模式。

scala> case class Foo                                             
warning: there were deprecation warnings; re-run with -deprecation for details
defined class Foo

scala> (new Foo: Any) match { case Foo => true; case _ => false }
res10: Boolean = false

而不是:

scala> (new Foo: Any) match { case _: Foo => true; case _ => false } 
res11: Boolean = true

或者更好:

scala> case object Bar                                               
defined module Bar

scala> (Bar: Any) match { case Bar => true; case _ => false }
res12: Boolean = true

更新希望下面的文字记录能够说明为什么空参数列表优于已弃用的缺失参数列表。

scala> case class Foo() // Using an empty parameter list rather than zero parameter lists.
defined class Foo

scala> Foo // Access the companion object Foo
res0: Foo.type = <function0>

scala> Foo() // Call Foo.apply() to construct an instance of class Foo
res1: Foo = Foo()

scala> case class Bar
warning: there were deprecation warnings; re-run with -deprecation for details
defined class Bar

scala> Bar // You may expect this to construct a new instance of class Bar, but instead
// it references the companion object Bar
res2: Bar.type = <function0>

scala> Bar() // This calls Bar.apply(), but is not symmetrical with the class definition.
res3: Bar = Bar()

scala> Bar.apply // Another way to call Bar.apply
res4: Bar = Bar()

案例对象通常仍然优于空参数列表。

关于scala - 为什么不推荐使用没有参数列表的案例类?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2254710/

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