這工作:莫名其妙的錯誤,在斯威夫特
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