gpt4 book ai didi

ios - 一个变量,一个类和两个相同的函数swift

转载 作者:行者123 更新时间:2023-11-28 12:12:52 24 4
gpt4 key购买 nike

我已经在 google 上搜索这个答案很长时间了,直到我在 stack overflow 创建了一个帐户来问这个问题。

如何编写一个变量来保存一个类,其中包含一些变量,然后调用同一个函数两次?代码中解释:

class Persons {

var oldName = ""
var oldAge = 0
var oldGender = ""
var name = ""
var age = 0
var gender = ""

func create(_ name:String, _ age:Int, _ gender:String) -> String {

if(age > 100) {
print("Can't create a person with an age that is over 100!")

return "Not created!"
}

if(gender == "Boy" || gender == "Girl") {

}
else {
print("Gender has to be a girl or a boy!")

return "Not created!"
}
self.name = name
self.age = age
self.gender = gender

self.oldName = name
self.oldAge = age
self.oldGender = gender

print("You just created a \(gender) called: '\(name)' with the age of: '\(age)'!")

return "Created!"
}

func modify(_ targetName:String, _ newName:String, _ newAge:Int, _ newGender:String) -> String {

if(age > 100) {
print("Can't modify a person with an age that is over 100!")
return "Not modified!"
}

if(gender == "Boy" || gender == "Girl") {

}
else {
print("Gender has to be a girl or a boy!")
return "Not modified!"
}

if(targetName != "" && targetName == self.name) {
self.name = newName
self.age = newAge
self.gender = newGender

print("You just changed \(oldName)'s gender from: \(oldGender) to: \(gender), \(oldName)'s name from: \(oldName) to: \(name) and \(oldName)'s age from: \(oldAge) to: \(age)!")
}
else {
print("Please enter a valid target name or create one!")
}

return "Modified!"
}

func delete(_ targetName:String) -> String {

if(name != "" && targetName == self.name) {
print("Deleted: \(name)!")
}
else {
print("Please enter a valid target name or create one!")
}

return "Deleted!"
}

}

var p = Persons()
p.create("Isak", 11, "Boy")
p.create("Sanne", 7, "Girl") // Here I create another person
p.delete("Isak") // But if I say delete 'Isak' it does not delete him because I created 'Sanne' above!

/*
It would work like this

p.create("Isak", 11, "Boy")
p.delete("Isak")
p.create("Sanne", 7, "Girl")
*/

请帮忙。我花了很长时间才找到答案。如果您需要更多详细信息,请回复,我会尽力解释更多。

最佳答案

这里的问题是您正在使用 Person 的单个实例。当你在做的时候:

p.create("Isak", 11, "Boy")
p.create("Sanne", 7, "Girl") // Here I create another person

尽管您只是在编辑 Person 类的 p 实例的属性,但您并没有创建另一个人。因此,当您删除 Isak 时:

p.delete("Isak")

已经没有 Isak,他被重命名为 Sanne。

要解决这个问题,您应该创建两个独立的 Person 实例:

var p1 = Persons()
var p2 = Persons()
p1.create("Isak", 11, "Boy")
p2.create("Sanne", 7, "Girl") // Here I create another instance of person
p1.delete("Isak")

在此状态下,您有两个人:您刚刚删除的 Sanne 和 Isak,而 Sanne 仍然存在并且可以访问。

如果你想用一个实例来容纳你所有的人,使用这个:

class Person {
var oldName = ""
var oldAge = 0
var oldGender = ""
var name = ""
var age = 0
var gender = ""

func create(_ name:String, _ age:Int, _ gender:String) -> String {

if(age > 100) {
print("Can't create a person with an age that is over 100!")

return "Not created!"
}

if(gender == "Boy" || gender == "Girl") {

}
else {
print("Gender has to be a girl or a boy!")

return "Not created!"
}
self.name = name
self.age = age
self.gender = gender

self.oldName = name
self.oldAge = age
self.oldGender = gender

print("You just created a \(gender) called: '\(name)' with the age of: '\(age)'!")

return "Created!"
}

func modify(_ targetName:String, _ newName:String, _ newAge:Int, _ newGender:String) -> String {

if(age > 100) {
print("Can't modify a person with an age that is over 100!")
return "Not modified!"
}

if(gender == "Boy" || gender == "Girl") {

}
else {
print("Gender has to be a girl or a boy!")
return "Not modified!"
}

if(targetName != "" && targetName == self.name) {
self.name = newName
self.age = newAge
self.gender = newGender

print("You just changed \(oldName)'s gender from: \(oldGender) to: \(gender), \(oldName)'s name from: \(oldName) to: \(name) and \(oldName)'s age from: \(oldAge) to: \(age)!")
}
else {
print("Please enter a valid target name or create one!")
}

return "Modified!"
}

func delete() -> String {
return "Deleted!"
}
}

class Persons {
var personsDictionary = [String: Person]()
}

var persons = Persons()
var p1 = Person()
var p2 = Person()

p1.create("Isak", 11, "Boy")
p2.create("Sanne", 7, "Girl")

persons.personsDictionary[p1.name] = p1
persons.personsDictionary[p2.name] = p2

persons.personsDictionary["Isak"]?.delete()

这里我们有一个 Person 类(您在问题中定义的一个,但 delete() 方法略有更改)和一个具有 Dictionary 的 Persons 类[String : Person]。字典的键是你的人的名字,值是这个人。

当我们创建一个人实例时,我们将其存储在 personsDictionary 中,然后我们可以通过人名访问该字典中的每个人,并且将返回一个 Optional,我们可以在其上调用您定义的所有方法.

关于ios - 一个变量,一个类和两个相同的函数swift,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47901491/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com