2015-03-18 4 views
0

Ниже приведена моя быстрая функция для вычисления суммы кратных заданного набора действительных чисел в диапазоне от 0 до 'upto'. Алгоритм проходит от 1 до верхнего предела и сопоставляет массив кратных массивам с модулями для указанных множителей, а затем уменьшает этот массив с использованием умножения, так что если заданное значение i равномерно делится на любой из данных множителей, результат из снижения будет 0.Swift map compile error

func sumOfMultiples(mults: [Int], upto: Int) -> { 
    var acc: Int = 0 
    for i in 1...upto { 
     if mults.map({i % $0}).reduce(1,*) == 0 { 
      acc += i 
     } 
    } 
    return acc 
} 

проблема заключается в том, что я получаю ошибку компиляции

error: 'Int' is not a subtype of '()' 
    if mults.map({i % 0}).reduce(1,*) == 0 { 

ответ

1
// Methinks you're missing this:  ~~~~~~~~vvv 
func sumOfMultiples(mults: [Int], upto: Int) -> Int { 
+0

Я добавил это в качестве комментария к ответу .... –

0
func sumOfMultiples(mults: [Int], upto: Int) -> { 
    var acc: Int = 0 
    for i in 1...upto { 
    if mults.map({ (x) in i % x }).reduce(1,*) == 0 { 
     acc += i 
    } 
    } 
    return acc 
} 
+0

Это не будет компилировать. Вы забыли возвращаемое значение (например, OP). Также добавьте короткое предложение, что вы меняете (хотя это почти очевидно) –