我希望能够将无限数量的字符串(varargs)传递给函数,并返回它们是否都是相同的字符串。
这是我迄今为止所做的工作 - 但我需要进一步的帮助:
func compareSymbols(symbols: String...) -> Bool {
var symbolsAreEqual = false
for symbol in symbols {
}
return symbolsAreEqual
}
答案 0 :(得分:2)
将它们放入Set
(删除重复项)并检查结果集是否只包含一个元素:
func compareSymbols(symbols: String...) -> Bool {
return Set(symbols).count == 1
}
答案 1 :(得分:2)
这是一个在找到不同符号后立即退出的版本:
func compareSymbols(symbols: String...) -> Bool {
if let first = symbols.first {
for symbol in symbols.dropFirst() {
if symbol != first {
return false
}
}
}
return true
}
compareSymbols(symbols: "a", "a", "a") // true
compareSymbols(symbols: "a", "b") // false
compareSymbols(symbols: "a") // true
可变参数(如symbols: String...
)表示为函数内部的数组。
@MartinR回答了关于数组的类似问题here。他谈到了使用显式循环与Set
与contains
的性能影响。