我怀疑这两段代码之间有什么区别。
显而易见的是,如果方法是在类中编写的,则必须实例化类,而如果它在伴随对象中,则不需要这样做。
但是,还有其他差异吗?哪些有利有弊?
在类
中定义一个方法class Hello {
def hello = println("Hello world")
}
object Hello {
def main(args: Array[String]) {
val instance = new Hello()
instance.hello
}
}
在配套对象中定义方法
class Hello {
}
object Hello {
def hello = println("Hello world")
def main(args: Array[String]) {
this.hello
}
}
答案 0 :(得分:7)
如果你还记得Scala来自Java,它可能会更有意义。在Java中,只有一个类,它有mysql> use mysql;
mysql> GRANT SELECT, INSERT, UPDATE, DELETE ON yourdb.* TO james@localhost IDENTIFIED BY 'yourpassword';
mysql> FLUSH PRIVILEGES;
mysql> \q
个方法,它们不依赖于实例中的任何字段(但可以读取static
个字段)和常规(非静态,实例级)方法。区别在于“SomeType常见的功能,特别是没有实例”,以及“需要特定实例状态的功能”。前者是Java中的static
方法,后者是实例方法。在Scala中,所有static
部分都应放在static
中,实例级object
和val
位于类中。
例如:
def