字符不可用,请直接使用字符串。

3

我无法弄清如何修复它。我只想了解它的工作原理以及应该替换什么。

我已经尝试删除字符,但仍然不起作用。

import Foundation
var shrinking = String("hello")
repeat {
    print(shrinking)
    shrinking = String(shrinking.characters.dropLast())
}
while shrinking.characters.count > 0

我原本期望程序输出如下:

hello
hell
hel
he
h

但是它完全没有起作用。

1
“我已经尝试删除 characters.,但它仍然无法正常工作。”... 这很有趣,因为当您删除这两个 characters 引用时,它可以正常工作。与其只告诉我们它“不起作用”,为什么不告诉我们它实际上做了什么呢? - Rob
1个回答

1
如果你删除characters,你的代码应该可以正常工作。我建议你创建一个新的playground文件。另外,你可以使用RangeReplaceableCollection的变异方法popLast并在字符串不为空时进行迭代,以避免多次调用集合计数属性。
var shrinking = "hello"
repeat {
    print(shrinking)
    shrinking.popLast()
} while !shrinking.isEmpty

这将打印

你好

你好

你好

你好

你好

或者使用removeLast方法,但它要求字符串不为空,因此您需要在闭包之前检查字符串是否为空:


var shrinking = "hello"

while !shrinking.isEmpty {
    print(shrinking)
    shrinking.removeLast()
}

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接