【发布时间】:2013-07-11 23:56:16
【问题描述】:
我正在寻找很长一段时间来解决以下问题: 我的类“B”的每个实例都使用一种方法将 Seq“输出”存储在文件中。
class B extends IO {
private var b = 0.0
var output = Seq(0.0)
def add(a:Int) = {
b += a
output :+= b
WriteToFile(fileName, output)
}
}
WriteToFile 方法还有一个特点:
trait IO {
def WriteToFile(fileName:String, data:Seq[Int]) = {
create file and name it something like: fileName+this+".m"
}
}
因此,每次在类“B”的实例上调用“add”方法时,输出序列都会存储在文件中。我想为“B”类的每个实例创建一个不同的文件。但是当我创建一个像
这样的实例时val x = new B
WriteToFile 方法中的 this 关键字只是将“Bank()”添加到文件名。那么,如何更改代码以使“B”类的每个新实例都创建自己的文件呢?以及如何更改 WriteToFile-Method 以将实例的名称(此处为“x”)添加到确定文件名的字符串中?
【问题讨论】:
-
对象(类的实例)没有名称。所以没有“实例名称”这样的东西。 变量有名称,但变量是对对象的引用,你可以有多个变量引用同一个对象。所以,你想要的是不可能的——你对变量和对象的名称有误解。
-
只有在类中定义了实例名才能添加实例名。我添加 Bank() 可能是因为您的类型 Bank 是一个案例类,它为您定义了 toString。通常 new Object().toString 会打印 jvm - 几乎没有用的哈希码。
-
感谢 cmets。我想,现在我明白了这个概念。这很有帮助。尤其是你的,vitalii!
标签: scala