【问题标题】:SWIFT: Subscript int in String (Cnndition works, assignment not)SWIFT:String 中的下标 int(Cnndition 有效,赋值无效)
【发布时间】:2015-10-02 19:18:01
【问题描述】:

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

【问题讨论】:

    标签: string swift int subscript


    【解决方案1】:

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

    所以你必须指定你想使用哪个subscript。像这样,

    var c:Character = s[0]
    

    var c:String = s[0]
    

    【讨论】:

    • 是的!你说的对。现在很清楚了。比较从常量字符串中添加所需的类型。非常感谢!
    猜你喜欢
    • 2010-09-26
    • 2012-09-07
    • 1970-01-01
    • 2015-09-26
    • 2013-02-12
    • 1970-01-01
    • 2022-01-05
    相关资源
    最近更新 更多