从Kotlin转Swift:switch语句is判断后如何实现智能/隐式类型转换?
Swift Switch类型判断优化方案
Swift的switch支持模式匹配绑定,可以直接在case分支中完成类型校验与对象绑定,彻底消除冗余的as!强制转换。
优化后的代码如下:
do { let weatherData = try JSONDecoder().decode(type, from: data) switch weatherData { case let typedData as WeatherData: // 直接使用已绑定的typedData,无需额外转换 if let firstWeather = typedData.weather.first { print(getWeatherCondition(conditionId: firstWeather.id)) } default: print("Unknown type") } } catch { print(error) }
补充说明
- 用
case let typedData as WeatherData的写法,同时完成了「类型校验」和「类型绑定」两步操作,后续可直接使用typedData,完全替代原代码里的is判断加as!转换。 - 额外优化了原代码中
first!的强制解包,换成可选绑定if let避免运行时崩溃,这也是Swift中处理可选类型的推荐写法。
内容的提问来源于stack exchange,提问作者Bitwise DEVS
相关产品推荐
相关产品推荐

