我是斯卡拉的新手,这是一个问题:
object Models {
class A1 { // some methods }
class A2 { // some methods }
}
此代码有效,而模型似乎被视为某种范围单元 - 我可以将其导入到我需要的任何地方。这是正常做法吗?我可以使用它作为包装部分范围的方法吗?似乎还有一个包对象,我觉得它的行为类似。我应该知道这种方法有什么问题吗?
答案 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