Цикл в замыкании


#1

Доброго времени суток, есть задание из этого замыкания

numbers.map({ (number: Int) -> Int in
    let result = 3 * number
    return result
})

нужно сделать так что бы оно вернуло ноль для всех нечетных чисел… как многие догадаются это задание из книги по Swift.
Я долго и упорно извращался и ломал голову, не могу. Понимаю что ошибка в написании цикла, почему то берет только первое значение, не работает как с кортежем…подскажите пожалуйста.

let numbers = [20, 19, 7, 12, 70]
numbers.map({ (number: Int) -> Int in
    var result = 0
    for ost in numbers {
        if ost % 2 == 0 {
            result = number * 3
        } else {
            result = 0
        }
      return result
    }
    return result
})

let numbers = [20, 19, 7, 12, 70]
numbers.map({ (number: Int) -> Int in
    var result = 3 * number
    for ost in result {
        if ost % 2 == 0 {
           result = ost
        } else {
            result = 0
        }
      return result
    }
    return result
})


#2

На это сообщение поступили жалобы от участников сообщества, поэтому оно временно скрыто.


#3

А почему не использовать filter?


#4

numbers.map({ (number: Int) -> Int in
let result = 3 * number
if result%2 == 0 {
return result
} else {
return 0
}
})


#5

Все оказывается проще чем кажется, думал что значение возвращается в переменную result, а от туда уже в замыкание, а получается сразу в замыкание… тупим … спасибо за ответ…изучаем дальше =)


#6

Привет. А как ты через filtr реализуешь дополнительное условие “let result = 3 * number”? Спасибо.


#7

Через filter данную задачу не реализовать.