Scala 类无法访问其同伴对象。(带导入和类名)
我是斯卡拉的新手。我知道伴生对象只是具有相同类名的单例对象。如果一个单例对象就像使用静态方法一样,这意味着我应该能够访问它的方法,而无需在类中创建实例。以下是我的代码片段:Scala 类无法访问其同伴对象。(带导入和类名),scala,Scala,我是斯卡拉的新手。我知道伴生对象只是具有相同类名的单例对象。如果一个单例对象就像使用静态方法一样,这意味着我应该能够访问它的方法,而无需在类中创建实例。以下是我的代码片段: class Main { import Main._ def sayHelloWorld() { println("Hello World"); } Main.sayHi //error } object Main { def sayHi() { println("Hi!");
class Main {
import Main._
def sayHelloWorld() {
println("Hello World");
}
Main.sayHi //error
}
object Main {
def sayHi() {
println("Hi!");
}
}
问题1。为什么我不能访问同伴对象的方法(尽管我已经指定了导入)
问题2:如何在不导入的情况下使用对象名并直接访问它?由于提供的代码由于其他原因无法编译,因此很难猜测您遇到了什么问题。但假设你是这个意思:
class Main {
import Main._
def sayHelloWorld() {
println("Hello World")
}
sayHi()
}
object Main {
def sayHi() {
println("Hi!")
}
}
然后,这将调用伴生对象中的sayHi()
val m = new Main(); //> Hi!
由于提供的代码由于其他原因无法编译,因此很难猜测您遇到了什么问题。但假设你是这个意思:
class Main {
import Main._
def sayHelloWorld() {
println("Hello World")
}
sayHi()
}
object Main {
def sayHi() {
println("Hi!")
}
}
然后,这将调用伴生对象中的sayHi()
val m = new Main(); //> Hi!
实际的问题是我没有将它们都绑定到另一个对象。(答复) 附加信息:因为伴生对象和类必须在同一个源文件中定义,所以不能在解释器中创建它们。 资料来源:每日scala 解决方法:使用REPL中的某个对象绑定两者 或者正如用户#shadowlands所说
您可以在REPL中创建它们,但需要作为单个:paste命令的一部分来创建它们(键入:help以获取REPL命令列表)实际的问题是我没有将它们与另一个对象绑定。(答复) 附加信息:因为伴生对象和类必须在同一个源文件中定义,所以不能在解释器中创建它们。 资料来源:每日scala 解决方法:使用REPL中的某个对象绑定两者 或者正如用户#shadowlands所说
您可以在REPL中创建它们,但您需要作为单个:粘贴命令的一部分来创建它们(键入:help以获取REPL命令列表)测试从何而来?“问题1.为什么我无法访问伴随对象的方法(尽管我已指定了导入)?”您可以。请张贴您正在使用的实际代码<代码>测试没有声明,代码中也没有对sayHiI()的调用。如果(在课堂上)有,那就行了,谢谢!实际的问题是我没有将两者都绑定到一个对象。(REPL)附加信息:由于伴生对象和类必须在同一源文件中定义,因此无法在解释器中创建它们。来源:每日scala解决方法:使用REPL中的某个对象绑定这两个对象您可以在REPL中创建它们,但您需要将它们作为单个
:粘贴命令的一部分来创建(键入:help
以获取REPL命令列表)。测试从何而来?”问题1.为什么我无法访问伴随对象的方法(虽然我已经指定了导入)?“您可以。请发布您正在使用的实际代码。test
未声明,并且您的代码中没有对sayHiI()的调用。如果(在类Main中)有,它将起作用。谢谢!实际问题是我没有将两者都绑定到对象上。(REPL)其他信息:由于伴生对象和类必须在同一源文件中定义,因此无法在解释器中创建它们。来源:daily scala解决方法:使用REPL中的某个对象绑定这两个对象您可以在REPL中创建它们,但需要作为单个:paste
命令的一部分来创建它们(键入:help
查看REPL命令列表)。是的,很抱歉代码中不应包含该测试。谢谢帮助!是的,很抱歉代码中不应包含该测试。谢谢帮助!