- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我已经在 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/
有没有办法在 .swift 文件(编译成 .swift 模块)中声明函数,如下所示: 你好.swift func hello_world() { println("hello world")
我正在尝试使用 xmpp_messenger_ios 和 XMPPFramework 在 iOS 上执行 MUC 这是加入房间的代码。 func createOrJoinRoomOnXMPP()
我想在我的应用程序上创建一个 3D Touch 快捷方式,我已经完成了有关快捷方式本身的所有操作,它显示正确,带有文本和图标。 当我运行这个快捷方式时,我的应用程序崩溃了,因为 AppDelegate
我的代码如下: let assetTag = Expression("asset_tag") let query2 = mdm.select(mdm[assetTag],os, mac, lastRe
我的 swift 代码如下所示 Family.arrayTuple:[(String,String)]? = [] Family.arrayTupleStorage:String? Family.ar
这是我的 JSON,当我读取 ord 和 uniq 数据时出现错误 let response2 : [String: Any] = ["Response":["status":"SUCCESS","
我想将 swift 扩展文件移动到 swift 包中。但是,将文件移动到 swift 包后,我遇到了这种错误: "Type 'NSAttributedString' has no member 'ma
使用CocoaPods,我们可以设置以下配置: pod 'SourceModel', :configurations => ['Debug'] 有什么方法可以用 Swift Package Manag
我正在 Xcode 中开发一个 swift 项目。我将其称为主要项目。我大部分都在工作。我在日期选择器、日期范围和日期数学方面遇到了麻烦,因此我开始了另一个名为 StarEndDate 的项目,其中只
这是 ObjectiveC 代码: CCSprite *progress = [CCSprite spriteWithImageNamed:@"progress.png"]; mProgressBar
我正在创建一个命令行工具,在 Xcode 中使用 Swift。我想使用一个类似于 grunt 的配置文件确实如此,但我希望它是像 Swift 包管理器的 package.swift 文件那样的快速代码
我假设这意味着使用系统上安装的任何 swift 运行脚本:#!/usr/bin/swift 如何指定脚本适用的解释器版本? 最佳答案 Cato可用于此: #!/usr/bin/env cato 1.2
代码说完全没问题,没有错误,但是当我去运行模拟器的时候,会出现这样的字样: (Swift.LazyMapCollection (_base:[ ] 我正在尝试创建一个显示报价的报价应用。 这是导入
是否可以在运行 Swift(例如 Perfect、Vapor、Kitura 等)的服务器上使用 RealmSwift 并使用它来存储数据? (我正在考虑尝试将其作为另一种解决方案的替代方案,例如 no
我刚开始学习编程,正在尝试完成 Swift 编程书中的实验。 它要求““编写一个函数,通过比较两个 Rank 值的原始值来比较它们。” enum Rank: Int { case Ace = 1 ca
在您将此问题标记为重复之前,我检查了 this question 它对我不起作用。 如何修复这个错误: error: SWIFT_VERSION '5.0' is unsupported, suppo
从 Xcode 9.3 开始,我在我的模型中使用“Swift.ImplicitlyUnwrappedOptional.some”包裹了我的字符串变量 我不知道这是怎么发生的,但它毁了我的应用程序! 我
这个问题在这里已经有了答案: How to include .swift file from other .swift file in an immediate mode? (2 个答案) 关闭 6
我正在使用 Swift Package Manager 创建一个应用程序,我需要知道构建项目的配置,即 Debug 或 Release。我试图避免使用 .xcodeproj 文件。请有人让我知道这是否
有一个带有函数定义的文件bar.swift: func bar() { println("bar") } 以及一个以立即模式运行的脚本foo.swift: #!/usr/bin/xcrun s
我是一名优秀的程序员,十分优秀!