Проблема с типами


#1

Здравствуйте, товарищи!
Подскажите, пожалуйста, в чем проблема и как её исправить?

Задача:
Написать функцию, принимающую натуральное трехзначное число.
Вычислить и вывести на экран число, полученное путем “переворота” (123 => 321).

Решение:
func reverse(Source: Int) -> Int {
var Old = Source
var New = 0
for index in 1…3 {
New = New + (Old%10 * pow(10, 3-index))
Old = Old/10
}
return New
}

Текст ошибки:
Playground execution failed: error: MyPlayground.playground:58:29: error: binary operator ‘*’ cannot be applied to operands of type ‘Int’ and 'Decimal’
New = New + (Old%10 * pow(10, 3-index))
~~~~~~ ^ ~~~~~~~~~~~~~~~~

MyPlayground.playground:58:29: note: overloads for ‘*’ exist with these partially matching parameter lists: (Int, Int), (Decimal, Decimal)
New = New + (Old%10 * pow(10, 3-index))


#2

Нельзя перемножать два разных типа Decimal и Int, сначала нужно перевести Decimal в NSDecimalNumber, после чего NSDecimalNumber в Int:

func reverse(source: Int) -> Int {
    var old = source
    var new = 0
    for index in 1...3 {
        let powResult = NSDecimalNumber(decimal: pow(10, 3-index))
        new = new + (old%10 * Int(powResult))
        old = old/10
    }
    return new
}

И еще - не создавайте переменные с большой заглавной буквой - это моветон.


#3

Здорово, огромное спасибо за решение и совет!