Это работает:Непонятные ошибки в Swift
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 с тем же первым и вторым фрагментом кода, и автор, по-видимому, не получает того же err ПРС.
Давайте снимем этот бросок:
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
:
func averageOf(numbers: Int...) -> Int {
var sum = 0
for number in numbers {
sum += number
}
return sum/Float(numbers.count)
}
averageOf()
averageOf(42, 597, 12)
Я получаю эту ошибку на знаке деления:
Cannot invoke 'init' with an argument list of type '(@lvalue Int, $T5)'
Я также получаю эту ошибку, если я изменить возвращаемый тип обратно Float
.
Все это не имеет для меня никакого смысла. Это Xcode, идущий по почте, или я пропустил что-то тонкое?
Это было ... Спасибо. –