SWIFT:String中的下标int(Cnndition工作,赋值不)

时间:2015-07-14 08:39:13

标签: string swift int subscript

我想分配一个字符串的第一个字符。当然有一个高级功能,但对我来说(我来自C ++),只需使用[index]就可以轻松阅读。所以我为String类型定义了一个扩展名:

extension String {

    subscript (i: Int) -> Character {
        return self[advance(self.startIndex, i)]
    }

    subscript (i: Int) -> String {
        return String(self[i] as Character)
    }

    ...

这适用于以下情况:

if (s[0] == "u") 

但是在分配此值时

var c = s[0]

我得到一个错误,编译器无法使用int类型下标String。 但差异在哪里?

1 个答案:

答案 0 :(得分:2)

我认为编译器无法推断subscript的返回类型,因为这两个subscript具有相同的输入签名。

因此您必须指定要使用的subscript。像这样,

var c:Character = s[0]

var c:String = s[0]