2016-04-25 3 views
-4

У меня есть массивSwift: Снизить функция

let digits = ["3", "1", "4", "1"]

Я хочу, чтобы преобразовать их в Int значение 3141

Я попытался

let digits = ["3", "1", "4", "1"] 
let myDigit = Int(digits.reduce("") { $0 + $1 }) 
print(myDigit) //3141 

Но я не хочу для обертывания Int() все digits.reduce("") { $0 + $1 }, я просто хочу использовать только reduce для достижения этого , (Что мы можем использовать Int() внутри функции reduce)

Как это сделать? И есть ли еще пути для достижения этого?

Любая помощь будет оценена по достоинству. Благодарю.

+5

Как вы планируете преобразовать строку в int без использования 'Int()'? – ozgur

+0

Возможно, я не объяснил правильно, я имею в виду, что не используйте 'Int()' для обертывания 'digits.reduce (" ") {$ 0 + $ 1}' как это. Я просто хочу, как @James ответ. – Khuong

ответ

-1

Я не думаю, что вы можете использовать уменьшить для достижения этой цели, но вы можете сделать это:

var number = Int() 

let digits = ["3", "1", "4", "1"] 
var numberString = String() 
for digit in digits{ 
    numberString.appendContentsOf(digit) 
} 
if let final = Int(numberString){ 
    number = final 
} 
print(number) 
1

Другой подход с уменьшить. В какой-то момент нет способа конвертировать строки, которые у вас есть в Ints.

let digits = ["3", "1", "4", "1"] 
let number = digits.reduce(0) { 10 * $0 + Int($1, radix: 10)! } 
print(number) 
+0

Вот чего я хочу, в вопросе я имею в виду, что я не хочу использовать 'Int', чтобы обернуть все' digits.reduce ("") {$ 0 + $ 1} 'как это. Я не имею в виду, что я не использую 'Int()' для переноса ... – Khuong

Смежные вопросы