Я хотел бы добиться следующего, но не могу исправить ошибку: «Не номинальный тип« Элемент »не поддерживает явную инициализацию»
Исходная попытка:
public extension Array where Element: FloatingPointMathType {
func mean<Element>() -> Element {
let sum: Element = reduce (0.0, +) as! Element
return sum / Element(count) // ==> Non-nominal type 'Element' does not support explicit initialization
}
}
Кроме того, мне интересно, почему для этого требуется as! Element
cast
. Для сравнения, следующая локальная функция компилируется без проблем:
func mean<Element: FloatingPointMathType>(_ e: [Element]) -> Element {
let sum: Element = e.reduce (0.0, +)
return sum / Element(e.count)
}