0

我正在编写一个扩展来String返回它的反转版本:

extension String{

    func rev()->String{
        var r = ""
        r.extend(reverse(self))
        return r
    }
}

代码工作正常,但我想调用这个方法reverse,而不是rev。如果我这样做,我会收到一个错误,因为方法名称与通用函数冲突reverse

extension String{

    func reverse()->String{
        var r = ""
        r.extend(reverse(self)) // this is where I get the error
        return r
    }
}

有没有办法指定我的意思是reverse方法体内的泛型函数?

4

1 回答 1

4

您始终可以通过预先添加模块名称来显式调用 Swift 函数,例如Swift.reverse()

extension String{

    func reverse()->String{
        var r = ""
        r.extend(Swift.reverse(self))
        return r
    }
}

请注意,您可以将函数稍微简化为

func reverse()->String{
    return String(Swift.reverse(self))
}

这是有效的,因为Swift.reverse()返回一个数组,Array符合 SequenceType,并且String有一个构造函数

init<S : SequenceType where Character == Character>(_ characters: S)
于 2014-11-07T16:16:05.317 回答