如何在Scala中声明一个“对象”类类型的构造函数?即,单身一次性行动

我知道对象在 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

相关文章

共收录Twitter的14款开源软件,第1页Twitter的Emoji表情 Tw...
Java和Scala中关于==的区别Java:==比较两个变量本身的值,即...
本篇内容主要讲解“Scala怎么使用”,感兴趣的朋友不妨来看看...
这篇文章主要介绍“Scala是一种什么语言”,在日常操作中,相...
这篇文章主要介绍“Scala Trait怎么使用”,在日常操作中,相...
这篇文章主要介绍“Scala类型检查与模式匹配怎么使用”,在日...