Массив может хранить только один тип вещей. calculatedArray
может хранить только Double
с, поэтому вы не можете установить его элементы на String
с.
Вы можете создать новый массив с именем outputArray
, в котором можно хранить строки и преобразовать все двойные числа в строки:
var outputArray = [String]()
for index in 0..<calculatedArray.count {
if calculatedArray[index].isNaN {
outputArray.append("can't calculate")
} else {
outputArray.append("\(calculatedArray[index])")
}
}
Ваш метод calcLn
возвращает [Double]
, но похоже, что вы хотите вернуть outputArray
. Если это так, вам нужно изменить его подпись, чтобы она возвращала [String]
.
Обратите внимание, что вы можете выполнять преобразования массива с помощью map
. Вот более короткая версия вашего кода:
func calcLn () -> [String] {
let calculatedArray = firstArray.map { log(100.0/cos($0)) }
let outputStringsArray = calculatedArray.map { $0.isNaN ? "can't calculate" : "\($0)" }
return outputStringsArray
}