我有一个文件,其中我将人员列为'ID Name PhoneNumber Address',如下所示:
.asInstanceOf[A#T]
每当我尝试删除或修改某人时,我都不会这样做,除非我在程序执行期间添加了该人。我的意思是,我运行我的程序,除非我添加该人(通过我使用的添加方法),否则我将无法修改我的文件。
我可以像我说的那样将人添加到文件中,但即使这样,它也不会检查ID是否已经存在,即使我已经在我的方法中设置了这个ID。
我应该提一下,我有一个基于类的程序,带有repository-controller-UI结构。我在我的存储库中的SAVE功能是:
val z = x match {
case i1: Impl1 =>
5
case i2: Impl2 =>
true
}
z match {
case x: A#T => x
}
我在我的Controller中使用此功能,如下所示:
1 Mike 0752 Dallas Alley
2 John 0744 Square Avenue
3 Johnny 0923 Corner Street
我使用继承来创建FileRepository文件,该文件从初始存储库文件继承方法/参数。
def save(self, pers):
'''
Saves a person in class Persoana, returns ValueError if the ID already exists
'''
for i in self.__persList:
if(i.idPers == pers.idPers):
raise ValueError("ID already exists: " +str(i.idPers))
self.__persList.append(pers)
我在UI文件夹中的功能是:
def createPerson(self, idPers, nume, telefon, adresa):
'''
Creates a person as long as the data introduced is correct
'''
i = Persoana(idPers, nume, telefon, adresa)
self.__valiPers.validare(i) //checks if the data I put in is alright(name doesn't contain numbers etc.)
self.__repo.save(i)
无论如何,我意识到这个练习可以更容易/更快地完成,但是教授想让我们理解OOP。无论如何,我可以写东西到文件,但它不会检查人的ID是否已经存在,除非我在程序执行期间添加了该人。除非在程序执行期间添加了人员,否则我无法删除/修改人员。
现在用这个打破了我的大脑2个小时,查看每一行和所有内容,但我似乎无法破解它。我做错了什么?
答案 0 :(得分:0)
好吧,我发现了这个问题。问题是i.idPers和pers.idPers的类型不一样。一个是字符串,另一个是整数,它们之间的相等性从未发生过,因此程序从未进入IF循环。