Swift中使用map()转字符串为Int遇错:表达式拆分后类型转换问题
解决Swift中字符串拆分后类型转换的报错问题
嘿,我知道你为啥遇到这个报错了!问题出在split(separator: " ")返回的元素是Substring类型(也就是String.SubSequence),而Swift里Int的初始化器只认String类型的参数,直接把Substring塞进去自然就触发类型不匹配的错误啦。
给你调整好的代码,直接用就行:
let arr: [Any] = readLine()!.split(separator: " ").map { let str = String($0) return Int(str) ?? str }
简单解释下改动点:
- 先把拆分出来的Substring转成标准的String类型;
- 用
Int(str) ?? str简化了你的判断逻辑:如果字符串能转成整数就返回Int类型,转不了就返回原字符串,比原来的条件写法更简洁; - 运行你给的输入
"1 * 2 + 34 - 5",最终得到的数组就是[1, "*", 2, "+", 34, "-", 5],完全符合你的预期。
内容的提问来源于stack exchange,提问作者whok mok
相关产品推荐
相关产品推荐

