此代码失败:
let element: Float = self.getElement(row: 1, column: j)
let multiplier = powf(-1, j+2)*element
出现此错误:
游乐场执行失败:: 140:51:错误:无法调用' *'使用类型'(Float,Float)'的参数列表 let multiplier = powf(-1,j + 2)* element
请记住,这发生在这个块中:
for j in 0...self.columnCount {
其中columnCount
是Float。此外,第一行确实执行,因此getElement
方法确实返回一个Float。
我完全对此感到困惑,因为我认为没有理由不这样做。
答案 0 :(得分:2)
swift中没有隐式数值转换,因此在处理不同类型和/或期望类型与表达式结果不同时,您必须进行显式转换。
在您的情况下,j
是Int
而powf
需要Float
,因此必须按以下方式进行转换:
let multiplier = powf(-1, Float(j)+2)*element
请注意,2
文字虽然通常被视为整数,但会被编译器自动推断为Float
类型,因此在这种情况下不需要显式转换。
答案 1 :(得分:0)
我在调用Float(j)
时使用j
代替powf()
来解决此问题。显然,j
不能隐式转换为Float。