Arrays 在将元组数组传递到函数中时,我是否可以减少重复的Swift代码的数量?
我正在为Swift的入门作业编写代码。我使用一个元组数组作为函数的输入,然后返回一个包含一些相同元组的数组 根据我目前对Swift的了解,我需要连续三次声明元组数组。我需要声明函数的输入,声明函数将返回什么,还需要声明一个空数组来追加值并返回 这似乎是相当多余的。如果我一直在使用元组,有没有办法重写它,这样我就不必复制和粘贴代码三次 我猜真正的答案是使用类、结构或对象之类的东西,而不是元组,但我对Swift还不太了解Arrays 在将元组数组传递到函数中时,我是否可以减少重复的Swift代码的数量?,arrays,swift,tuples,Arrays,Swift,Tuples,我正在为Swift的入门作业编写代码。我使用一个元组数组作为函数的输入,然后返回一个包含一些相同元组的数组 根据我目前对Swift的了解,我需要连续三次声明元组数组。我需要声明函数的输入,声明函数将返回什么,还需要声明一个空数组来追加值并返回 这似乎是相当多余的。如果我一直在使用元组,有没有办法重写它,这样我就不必复制和粘贴代码三次 我猜真正的答案是使用类、结构或对象之类的东西,而不是元组,但我对Swift还不太了解 func findCleanAgents(agents: [(coverNam
func findCleanAgents(agents: [(coverName: String, realName: String, accessLevel: Int, compromised: Bool)])
-> [(coverName: String, realName: String, accessLevel: Int, compromised: Bool)] {
var cleanAgents = [(coverName: String, realName: String, accessLevel: Int, compromised: Bool)]()
for agent in agents {
if agent.compromised == false {
print("\(agent.coverName) isn't compromised.")
cleanAgents.append(agent)
}
}
return cleanAgents
}
您可以使用typealias,它完全按照其功能命名:类型的别名:
typealias AgentTuple = (coverName: String, realName: String, accessLevel: Int, compromised: Bool)
func findCleanAgents(agents: [AgentTuple]) -> [AgentTuple] {
var cleanAgents: [AgentTuple] = []
for agent in agents {
if agent.compromised == false {
print("\(agent.coverName) isn't compromised.")
cleanAgents.append(agent)
}
}
}
这是斯威夫特的
元组最适合于返回多个值的函数。它们真的不方便传递
在您的情况下,如果这四种数据类型通常在一起,请考虑创建一种新的类型:
struct Agent {
var coverName: String
var realName: String
var accessLevel: Int
var compromised: Bool
}
let agent = Agent(coverName: "Arlington Beech", realName: "James Bond", ...)