You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.22 09:55:17