我知道对象在
scala中几乎像单身对待.但是,在初始实例化中,我无法找到一种优雅的方式来指定默认行为.我可以通过将代码放入对象声明的正文来实现,但这似乎过于黑客.使用apply不会真的有效,因为它可以被多次调用,对于这种用例没有任何意义.
有什么想法如何做到这一点?
解决方法
类和对象都通过设计在实例化后运行其身体中的代码.为什么这个“黑客”?这是语言应该如何工作.如果你喜欢额外的大括号,你可以随时使用它们(它们会保留本地变量的保存和世界观).
object Initialized { // Initalization block { val someStrings = List("A","Be","Sea") someStrings.filter(_.contains('e')).foreach(s => println("Contains e: " + s)) } def doSomething { println("I was initialized before you saw this.") } } scala> Initialized.doSomething Contains e: Be Contains e: Sea I was initialized before you saw this. scala> Initialized.someStrings <console>:9: error: value someStrings is not a member of object Initialized Initialized.someStrings