SWIFT:String 中的下标 int(Cnndition 有效,赋值无效)

SWIFT: Subscript int in String (Cnndition works, assignment not)

我想分配字符串的第一个字符。当然有一个高级功能,但对我来说(我来自 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 类型下标字符串。 但是区别在哪里呢?

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

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

var c:Character = s[0]

var c:String = s[0]