我正在參加一個編碼訓練營,所以我對這些都是全新的,我想知道為什么當我運行這段代碼時,它只會列印陣列的前兩個點?
words = ["你好", "再見", "是", "不"]
index = 0.to_i
while index.to_i < words.length
p words[index.to_i]
index = index.to_s 1.to_s
end。
uj5u.com熱心網友回復:
這是因為
index = index.to_s 1.to_s
to_s將接收器轉換為字串,即0變為"0",1變為"1"。在字串上呼叫 將它們連接起來,即"0" "1"變成"01"。
這一個是好的,因為"01".to_i仍然是1。然而,在下一個迭代中,你得到的是"01" "1",變成了"011",并且"011".to_i是11,超過了陣列的長度。
要修復你的代碼,你只需要去掉轉換,堅持使用整數:
words = ["Hello"/span>, "Goodbye"/span>, "Yes"/span>, "No"/span>]
index = 0 ]
while index < words.length
p words[index]
index = index 1
結束。
你也可以通過each_index讓Ruby為你處理索引:
words.each_index do | index|
p words[index]
end
或者通過each沒有索引:
words.each do |word|
p字
end
uj5u.com熱心網友回復:
我不知道Ruby,所以我不確定語法。 但是我可以解決你的邏輯問題。
words = ["Hello"/span>, "Goodbye"/span>, "Yes"/span>, "No"/span>]
index = 0.to_i
while index.to_i < words.length
p words[index.to_i]
index = index.to_i 1
結束。
這將會起作用。 邏輯是這樣的:
- while index is less than length keep looping
- print words[index]
- 將索引增加1,使其移動到下一個位置。
轉載請註明出處,本文鏈接:https://www.uj5u.com/net/307620.html
標籤:
