0

我是scala的新手,这里有一个问题:

object Models {

  class A1 { // some methods }

  class A2 { // some methods }
}

这段代码有效,模型似乎被视为某种范围单元——我可以在任何需要的地方导入它。这是正常的做法吗?我可以将其用作确定软件包部分范围的方法吗?似乎还有一个包对象,我猜它的行为类似。这种方法有什么我应该知道的问题吗?

4

1 回答 1

2

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

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

于 2013-09-07T05:49:46.250 回答