我见过许多情况,我们可以使用Scala对象文件创建一个Scala项目,并在其中包含我们的代码而无需使用Scala类文件。
我目前正在开发一个项目,其中开发人员已在Scala object
文件(作为对象)中编写代码,而不是写入class
文件。更精确的是,我的IDE的屏幕截图显示代码是在目标文件中写的。
我想知道在Scala类和目标文件中编写代码的重要性。使用它们的理想方案是什么? 有一个类似的帖子here,它只显示了一个类和一个对象之间的区别,但是我想知道何时应该考虑使用Scala类以及何时使用Scala对象?
答案 0 :(得分:2)
如果要使用差值多次创建相同的数据结构,请使用class
。例如,类可以表示数据库应用程序中的一行数据,或Web服务器中的客户端请求。
当您只需要程序中的数据结构的单个副本时,请使用object
。例如,程序的命令行或数据缓存。
类可以具有较短的生命周期,因此将它们用于来来去去的数据。对象始终持续到程序完成,因此将它们用于需要永久可用的数据。
将object
转换为class
是相当简单的,所以从object
开始,除非您知道您将需要多个数据实例。
如果您只想将相似的功能或数据分组(在namespace
中),请将其放在object
。
如果您要编写软件库的代码,请使用可根据需要创建和删除的类。
请注意,这适用于顶级对象。 object
也可以用作类成员或本地值,但在这种情况下,它的操作类似于class
,因为它可以有多个实例,并且可能具有有限的生命周期。
答案 1 :(得分:0)
对象是您在程序中只能拥有一个对象的东西。它大部分时间用于包含不会发生太大变化的功能或对象。它在其他语言中相当于static
例如:
object StringUtils {
val LF = "\n"
def toUpperCase(str: String) = str.toUpperCase()
}
// usage
StringUtils.toUpperCase("foo")
另一方面,您可以使用new
创建课程。您可以在程序中拥有多个类的实例
class StringContainer(str: String) {
def toUpperCase() = new StringContainer(str.toUppercase())
}
// usage
val myString = new StringContainer("foo")
myString.toUpperCase()
有关更详细的示例,您可以查看scala文档: