微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

如何在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

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐