【发布时间】:2020-01-26 08:46:26
【问题描述】:
有人告诉我将伴生对象函数设为私有,并将伴生对象导入类,然后访问类中的函数。
以下代码在repl中不起作用。
示例:
object Foo {
private def bar(i: Int): Boolean = i == 5
}
class Foo{
import Foo._
bar(0)
}
object Foo {
private def bar(i: Int): Boolean = i == 5
}
class Foo{
import Foo._
Foo.bar(0)
}
scala> object Foo {
| private def bar(i: Int): Boolean = i == 5
| }
defined object Foo
scala>
scala> class Foo{
| import Foo._
|
| bar(0)
| }
<console>:15: error: not found: value bar
bar(0)
^
scala>
scala> object Foo {
| private def bar(i: Int): Boolean = i == 5
| }
defined object Foo
scala>
scala> class Foo{
| import Foo._
|
| Foo.bar(0)
| }
<console>:15: error: method bar in object Foo cannot be accessed in object Foo
Foo.bar(0)
^
【问题讨论】:
-
使用 :paste 作为下面提到的马里奥。要评估粘贴,您需要使用 cntl-d。请注意,需要 :paste 模式,因为有空行。如果没有空行,则似乎不需要 :paste 模式。
-
REPL 甚至会警告您它们实际上并不是同伴,因为它们是单独定义的。您可能没有收到警告,因为您收到了编译错误。
标签: scala