Swift 3循环除法报错:Binary operator '/'无法应用于'_'与'Int'类型
解决Swift中
Binary operator '/' cannot be applied to operands of type '_' and 'Int'的报错 这个问题我之前写Swift循环计算数值的时候也踩过坑,本质是Swift的强类型特性在起作用:
问题原因拆解
- 你的循环里
i是Int类型(因为1...40是整数范围,Swift会自动推断i为Int) - 而
2 * .pi是Double类型(.pi本身是Double,乘以整数2后还是Double) - Swift不允许不同数值类型直接使用
/运算符,所以触发了这个报错 - 换成
4的时候能运行,是因为Swift会自动把字面量4推断为Double来匹配左边的类型,但这种隐式转换只针对字面量,循环里的变量i不会自动转换
两种简单的解决方案
方案1:将i显式转换为Double类型
这是最直接且通用的方法,不管你循环里的i还要不要做其他Int相关操作都适用:
for i in 1...40 { let angle = 2 * .pi / Double(i) }
方案2:把循环范围改为Double类型
如果你的循环里i只用来做浮点运算,不需要作为整数使用,可以直接把范围改成浮点型:
for i in 1.0...40.0 { let angle = 2 * .pi / i }
两种方法都能解决这个类型不匹配的问题,你可以根据自己的代码场景选合适的~
内容的提问来源于stack exchange,提问作者Andrea
相关产品推荐
相关产品推荐

