Swift映射编译错误

时间:2015-03-18 20:23:14

标签: swift

下面是我的快速函数,用于计算给定实数组的倍数之和,范围从0到'直到'。该算法从1到上限循环,并将多个数组映射到指定乘数的模数组,然后使用乘法减少该数组,这样如果给定的i值可被任何给定的乘数整除,减少的结果将为0.

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 {

2 个答案:

答案 0 :(得分:1)

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

答案 1 :(得分: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
}