gpt4 book ai didi

swift - 在对象中 append 时避免值相乘

转载 作者:行者123 更新时间:2023-11-30 14:19:47 25 4
gpt4 key购买 nike

我想问一下如何解决我的问题。我只是简单地将一些“门户” append 到依赖的国家/地区。每个“门户”出现不止一次,我不想 append 。

我有以下类定义:

class cls_main{
var countries:[cls_country]!

init() {
countries = [cls_country]()
}

// "add Country"
func addCountry(iCountry:cls_country) {
countries.append(iCountry)
}

}

class cls_country{

var countryName:String!
var portals:[cls_portal]!

init() {
portals = [cls_portal]()
}

// "add Portal"
func addPortal(portName:String) {

var tmpPortal = cls_portal()
tmpPortal.portalName = portName

println("-->Input Portal: \(tmpPortal.portalName)")

if portals.count == 0 {
portals.append(tmpPortal)
} else {
for port in portals {
if port.portalName == portName {
println("SAME INPUT, DONT SAVE")
} else {
portals.append(tmpPortal)
}
}
}

}

func arrayCount(){
println("Portals : \(portals.count)")
}
}

class cls_portal{
var portalName:String!
}

所以我将其称为:

var MAIN = cls_main()
var country = cls_country()

country.countryName = "USA"
country.addPortal("Dance")
country.addPortal("Dance") // Should not be appended...
country.addPortal("Hike")
country.addPortal("Swim")
country.addPortal("Play")

MAIN.addCountry(country)
country = cls_country()

添加值后,我循环遍历这些值并打印它们。结果会是这样的:

循环:

for country in MAIN.countries {
println("COUNTRY: \(country.countryName)")

if country.countryName == "USA" {
for portal in country.portals {
println(" -> PORTAL : \(portal.portalName)")
}
country.arrayCount()
}
}

结果:

-->Input Portal: Dance
-->Input Portal: Dance
SAME INPUT, DONT SAVE
-->Input Portal: Hike
-->Input Portal: Swim
-->Input Portal: Play
COUNTRY: USA
-> PORTAL : Dance
-> PORTAL : Hike
-> PORTAL : Swim
-> PORTAL : Swim
-> PORTAL : Play
-> PORTAL : Play
-> PORTAL : Play
-> PORTAL : Play
Portals : 8

那么为什么每个传送门最终都会成倍增加?非常感谢。

最佳答案

在搜索循环中,您在查看每个元素后决定 tmpPortal 是否在您的 portals 中。在做出决定之前,您可能需要查看所有项目。添加变量 found 以表明已找到它。找到该项目后,您可以break跳出循环。

if portals.count == 0 {
portals.append(tmpPortal)
} else {
var found = false
for port in portals {
if port.portalName == portName {
println("SAME INPUT, DONT SAVE")
found = true
// found it, stop searching
break
}
}
if !found {
portals.append(tmpPortal)
}
}

关于swift - 在对象中 append 时避免值相乘,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30616570/

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