【发布时间】:2020-05-16 23:11:00
【问题描述】:
如果我有以下带有私有构造函数的案例类,并且我无法访问伴随对象中的应用方法。
case class Meter private (m: Int)
val m = Meter(10) // constructor Meter in class Meter cannot be accessed...
有没有办法使用带有私有构造函数的案例类,但将生成的应用方法保留在伴随的公共中?
我知道这两个选项之间没有区别(在我的示例中):
val m1 = new Meter(10)
val m2 = Meter(10)
但我想禁止第一个选项。
-- 编辑--
令人惊讶的是以下作品(但不是我真正想要的):
val x = Meter
val m3 = x(10) // m3 : Meter = Meter(10)
【问题讨论】:
-
您使用的是哪个版本的 Scala?我刚刚在我的 2.10.0 REPL 中尝试过,
val m2 = Meter(10)没有给出任何错误] -
@LuigiPlinge 我正在使用 Scala 2.10.3
-
似乎是
case class Meter private (m: Int)行导致错误,当声明为顶级对象 (scalafiddle.net/console/eb6fdc36b281b7d5eabf33396c2683a2) 但在另一个对象或 REPL (scalafiddle.net/console/cdc0d6e63aa8e41c89689f54970bb35f) 中声明时它可以工作跨度>
标签: scala apply case-class private-constructor