2016-03-26 11 views
1

Bunun nasıl sonuçlandığını anlayamıyorum ["OneSix", "FiveEight", "FiveOneZero"]. Gördüğüm yol, listeyi eşler ve% işareti ilk önce sayıyı "Altı" olarak değerlendirir. Peki sonuçlarda "Bir" önce neden "Altı" geliyor?Sözlük kullanılırken liste mi listeleniyor?

Bu bölüm beni karıştırır:

output = digitNames[number % 10]! + output 
    number /= 10 
let digitNames = [ 
0: "Zero", 1: "One", 2: "Two", 3: "Three", 4: "Four", 
5: "Five", 6: "Six", 7: "Seven", 8: "Eight", 9: "Nine" 
] 

let numbers = [16, 58, 510] 


let strings = numbers.map { 
(number) -> String in 
var number = number 
var output = "" 
while number > 0 { 
    output = digitNames[number % 10]! + output 
    number /= 10 
} 
return output 
} 
// strings is inferred to be of type [String] 
// its value is ["OneSix", "FiveEight", "FiveOneZero"] 

cevap

1

iyi yolu bir döngü bir kalem ve kağıt ile bir anda içinden bir adım çalışmaktır nasıl çalıştığını görmek.

Sayıyı 123 diyelim. Sonra döngü aşağıdaki gibi çalışır:

var output = "" 
while number > 0 { 
    output = digitNames[number % 10]! + output 
    number /= 10 
} 
  • ilk yineleme output="" ve number=123
  • önce, ilk olarak tekrarlamadan sonra output olur "Three" ve number becomes 12 '
  • ikinci tekrarında sonra output"TwoThree" ve sayı olur 1
  • Son yineleme sonrasında output bec omes "OneTwoThree" ve numarasının doğru sırası ile korunur, böylece de output arkadan öne doğru büyüyor, ama aynı zamanda number arkadan öne doğru "küçülür" Diğer bir deyişle, 0

olur süreci.

+0

Oh, doğru! Temel olarak, bir sayının onlarca ve yüzlerce yerini dize biçimine yazdırmak için yineleniyor. Tatlı teşekkürler! –