雖然我當然承認,我可能是錯的,至於我可以告訴大家,爲了生產爲什麼我們需要初始化一個變量m,並且只有變量m才能產生一個菱形象限?
*
**
***
****
*****
與#times做環,你需要初始化變量,只有這個變量,外循環。
例如,
m=0
5.times do
m+=1
puts "*" * m
end
產生上述的圖像,但是這兩種
變體1
m=0
m+=1
5.times do
puts "*" * m
end
和
變體2
5.times do
m=0
m+=1
puts "*" * m
end
產生
*
*
*
*
*
*
*
*
*
*
=> 10
爲什麼會出現這種情況?
更有趣的是,
變體3
6.times do
m=0
puts "*" * m
m+=1
end
產生一系列的6個空行之後返回的6顯然,變量兩者的初始化和迭代器物質的放置(至少有#次做循環),但我的問題是爲什麼?如果這是「我知道你認爲你想要一個答案,但你真的不想放棄這個兔子洞」的情況下,那麼也許我們可以把它作爲一個有趣的reddit版本「解釋給我像我一樣五「,stackoverflow樣式。例如,在Variant 3中,由於m初始化爲0,因此我預計在第一次迭代時會出現空行,因爲我實際上告訴Ruby在此刻將星號符號乘以m的值。然而,在第一次迭代結束時,我還會期望m的值增加1.這幾乎就好像Ruby沒有達到那條線,因爲如果它確實如此,那麼第二次迭代應該包括m值爲1並因此產生帶有一個星號的行。
glin,我很欣賞這個解釋......它有助於澄清足夠的代碼和不足的變體之間的區別 – user309190