Scala对象作为范围

时间:2013-09-07 02:29:02

标签: scala

我是斯卡拉的新手,这是一个问题:

object Models {

  class A1 { // some methods }

  class A2 { // some methods }
}

此代码有效,而模型似乎被视为某种范围单元 - 我可以将其导入到我需要的任何地方。这是正常做法吗?我可以使用它作为包装部分范围的方法吗?似乎还有一个包对象,我觉得它的行为类似。我应该知道这种方法有什么问题吗?

1 个答案:

答案 0 :(得分:2)

这是正常做法,可以根据需要使用。您可以将一些通常无法在文件中进行分组的内容进行分组(例如,Consts)。

val DefaultKey="12345"  //not legal inside a file outside of a class or object

class A (key:String) {

}

法律版本:

package com.mytest

object KeyExchange {

   val DefaultKey="12345"  //now legal

    class A (key:String) {

    }

}

使用:

object Test extends App { //extending App is like a main method

  import com.mytest.KeyExchange._ //can use import statement here, bringing in class A and the const.

  val myA = new A(DefaultKey)
}

包对象有点像这个概念,除了放在它内部的东西变得可用于定义为该包的一部分的类和特征(例如com.mytest)。这是你可以放置const项的地方类经常使用,或者更重要的是隐式函数和对象。您可以将所有这些内容放在单独的文件和对象中,但是每次都必须明确地导入它们。您不必使用包对象。我的理解是,对于您确定大多数课程都可以使用的项目,应该谨慎使用。

参考: http://www.scala-lang.org/docu/files/packageobjects/packageobjects.html