这工作:莫名其妙的错误,在斯威夫特
func averageOf(numbers: Int...) -> Float {
var sum = 0
for number in numbers {
sum += number
}
return Float(sum)/Float(numbers.count)
}
averageOf() // (not a number)
averageOf(42, 597, 12) // (217.0)
但这并不:
func averageOf(numbers: Int...) -> Float {
var sum = 0
for number in numbers {
sum += number
}
return Float(sum/numbers.count)
}
averageOf()
averageOf(42, 597, 12)
它给了我这个错误的}
行:
Execution was interrupted, reason: EXC_BAD_INSTRUCTION (code=EXC_I386_INVOP, subcode=0x0)
我偶然发现another question与第一个和第二个代码片段相同,作者显然不会得到相同的错误ORS。
让我们删除该投:
func averageOf(numbers: Int...) -> Float {
var sum = 0
for number in numbers {
sum += number
}
return sum/numbers.count
}
averageOf()
averageOf(42, 597, 12)
它给了我这个错误,在除号:
Cannot invoke '/' with an argument list of type '(@lvalue Int, Int)'
如果我再改函数的返回类型Int
:
func averageOf(numbers: Int...) -> Int {
var sum = 0
for number in numbers {
sum += number
}
return sum/numbers.count
}
averageOf()
averageOf(42, 597, 12)
我得到相同的EXC_BAD_INSTRUCTION错误。
如果我只投了numbers.count
:如果我改变返回值类型回到Float
Cannot invoke 'init' with an argument list of type '(@lvalue Int, $T5)'
我也收到此错误:
func averageOf(numbers: Int...) -> Int {
var sum = 0
for number in numbers {
sum += number
}
return sum/Float(numbers.count)
}
averageOf()
averageOf(42, 597, 12)
我上除号此错误。
所有这些对我来说都没有意义。是Xcode去邮政,还是我错过了一些微妙的东西?
就是这样......谢谢。 – 2015-01-31 18:33:30