Scala在类中定义方法而不是在伴随对象上有什么区别
发布时间:2020-12-16 09:57:01 所属栏目:安全 来源:网络整理
导读:我怀疑这两段代码之间有什么区别. 显而易见的是,如果方法是在类中编写的,则必须实例化类,而如果它在伴随对象中,则不需要这样做. 但是,还有其他差异吗?哪些是有利有弊的? 在类中定义一个方法 class Hello { def hello = println("Hello world")}object Hell
我怀疑这两段代码之间有什么区别.
显而易见的是,如果方法是在类中编写的,则必须实例化类,而如果它在伴随对象中,则不需要这样做. 但是,还有其他差异吗?哪些是有利有弊的? 在类中定义一个方法 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 } } 解决方法
如果你还记得Scala来自Java,它可能会更有意义.在Java中,只有一个类,它有静态方法,它们不依赖于实例中的任何字段(但可以读取静态字段)和常规(非静态,实例级)方法.区别在于“SomeType常见的功能,特别是没有实例”,以及“需要特定实例状态的功能”.前者是Java中的静态方法,后者是实例方法.在Scala中,所有静态部分都应该放在对象中,实例级val和def在类中.
例如: object MyNumber { // This does not depend on any instance of MyNumber def add(c: Int,b: Int): Int = c + b } class MyNumber(a: Int) { // This depends on an instance of MyNumber def next: Int = a + 1 } (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |