Swift中characters属性不可用问题咨询及代码修复需求
Hey there! Let's break down what's going on with your code and fix it step by step.
问题原理
在Swift 5及后续版本中,String类型本身已经直接实现了Collection协议——这意味着你可以直接对字符串执行集合相关操作(比如获取长度、截取元素等)。旧版本里用来访问字符串字符集合的.characters属性已经被废弃移除,这就是你收到'characters is unavailable' please use string directly提示的核心原因。
你的代码问题分析
你尝试删除.characters相关代码,但可能没完全替换到位。原来的代码里有两处依赖.characters的逻辑:
shrinking = String(shrinking.characters.dropLast())while shrinking.characters.count > 0
这两处都需要去掉.characters,直接对String本身操作。
修正后的完整代码
import Foundation var shrinking = "hello" repeat { print(shrinking) shrinking = String(shrinking.dropLast()) } while shrinking.count > 0
关键修改说明
- 移除所有
.characters调用:现在String直接支持dropLast()方法(用来移除最后一个字符),也直接提供count属性(用来获取当前字符串的字符数量)。 - 小优化:
var shrinking = String("hello")可以简化为var shrinking = "hello",因为字符串字面量本身就是String类型,无需额外调用初始化器。
运行这段修正后的代码,会精准输出你预期的结果:
hello
hell
hel
he
h
内容的提问来源于stack exchange,提问作者Анастасия Лермонтова
相关产品推荐
相关产品推荐

