无法访问伴随对象但可以实例化 class
Cannot access companion object but can instantiate class
我有以下源代码:
abstract class Foo{
}
object Foo{
def foo(f : String) = println(f)
}
object Tester extends App{
class Bar extends Foo
val b = new Bar()
Bar.foo("bar")
}
当我尝试使用 sbt 运行 时,出现错误:
Foo.scala:9:5: not found: value Bar
[error] Bar.foo("bar") // this line won't compile...
[error] ^
[error] one error found
[error] (Compile / compileIncremental) Compilation failed
[error] Total time: 0 s, completed Mar 12, 2020 10:29:49 AM
即使我在应用程序中将其声明为 class 为什么我不能引用 Bar。
Why can't I refer to Bar even though I have declared it as a class in the app.
您没有将其称为 class。您指的是一个名为 Bar
的 对象 。范围内没有这样的对象。
object Foo
不是 class Bar
的伴随对象,即使 Bar
扩展了 class Foo
,例如
abstract class Foo {
Foo.foo("woohoo") // OK
}
object Foo {
private def foo(f : String) = println(f)
}
class Bar extends Foo {
Foo.foo("woohoo") // Error
}
伴随对象的名称必须与相应的 class 相同。
我有以下源代码:
abstract class Foo{
}
object Foo{
def foo(f : String) = println(f)
}
object Tester extends App{
class Bar extends Foo
val b = new Bar()
Bar.foo("bar")
}
当我尝试使用 sbt 运行 时,出现错误:
Foo.scala:9:5: not found: value Bar
[error] Bar.foo("bar") // this line won't compile...
[error] ^
[error] one error found
[error] (Compile / compileIncremental) Compilation failed
[error] Total time: 0 s, completed Mar 12, 2020 10:29:49 AM
即使我在应用程序中将其声明为 class 为什么我不能引用 Bar。
Why can't I refer to Bar even though I have declared it as a class in the app.
您没有将其称为 class。您指的是一个名为 Bar
的 对象 。范围内没有这样的对象。
object Foo
不是 class Bar
的伴随对象,即使 Bar
扩展了 class Foo
,例如
abstract class Foo {
Foo.foo("woohoo") // OK
}
object Foo {
private def foo(f : String) = println(f)
}
class Bar extends Foo {
Foo.foo("woohoo") // Error
}
伴随对象的名称必须与相应的 class 相同。