如何构建一个比较无限数量的字符串的Swift函数?

时间:2016-12-24 12:46:20

标签: swift function

我希望能够将无限数量的字符串(varargs)传递给函数,并返回它们是否都是相同的字符串。

这是我迄今为止所做的工作 - 但我需要进一步的帮助:

func compareSymbols(symbols: String...) -> Bool {
    var symbolsAreEqual = false
    for symbol in symbols {

    }
    return symbolsAreEqual
}

2 个答案:

答案 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。他谈到了使用显式循环与Setcontains的性能影响。