Upto, downto
- Posted on January 12th, 2007 filed in Snippets, Syntactic sugar
Jau gan ilgą laiką dirbu su Ruby, o jis vis dar nenustoja stebinti.
Dirbant su Rails'u (ypač kuriant template'us) dažnai tenka įdėti besikartojančius dummy elementus (pvz. naujienos, meniu punktai ir pan.). Pats neefektyviausias būdas yra žinoma copy-paste. Kurį laiką naudojau kažką tokio:
[code]
< % (1..5).each do |i| %>
Dummy text
< % end %>
[/code]
ir jaučiausi kietas hakeris ;)
Tačiau kažkur giliai viduje žinojau, kad kintamasis "i" čia yra nereikalingas, jutau kad aš atvedžiau jį į gyvenimą, kuriame jam nėra skirta nieko nuveikti, visą laiką kol bus rašomas "Dummy text" gyventi su nepilnavertiškumo kompleksu ir galiausiai išnykti taip ir nepalikus jokio pėdsako šiame pasaulyje.
Tvirtai nusprendžiau daugiau nežaloti nekaltų sielų (nors ir skaitmeninių, gyvenančių vos kelias akimirkas) ir surasti būda kaip galėčiau apsieiti be jų. Ir toks būdas yra!
[code]
< % 1.upto 5 do %>
Dummy text
< % end %>
[/code]
Update: kaip ir buvo pažymėta komentaruose dar gėriau naudoti "times" (kas beje parašyta pačioje Agile Web Development with Ruby on Rails pradžioje =))
[code]
< % 5.times do %>
Dummy text
< % end %>
[/code]
Gera yra žinoti, kad pakeitei kažkam gyvenimą ;)
January 18th, 2007 at 10:01 am
Arba dar graziau ir israiskingiau butu taip :)
Dummy text
January 18th, 2007 at 10:04 am
5.times do
Dummy text
end
January 20th, 2007 at 7:36 pm
atėjęs tik su teorinėmis žiniomis apie rails’us, skaičiau kad, jis tipo kaip ir vadovaujasi DRY(don’t repeat yourself) tai kaip čia dabar gaunasi su tuo dummy text? tai visgi ar tai DRY(kažką belenką ant elementų dedant) ar kaip čia gaunasi? prašom paaiškinti man. ačiū.
January 22nd, 2007 at 2:13 pm
belekas:
Simple. Pvz. kuriant puslapio template’ą turi navigacinį meniu (tą ul su daug li jame ;)). Taigi vietoje to, kad rašyti
ul
li dummy text /li
li dummy text /li
li dummy text /li
/ul
rašai tiesiog
ul
3.times do
li dummy text /li
end
/ul
January 24th, 2007 at 3:53 pm
Beje, galima ir pirmuoju budu darant nerasyti |i|:
(1..5).each do
puts “Dummy text”
end
January 24th, 2007 at 7:25 pm
Robertai,
o kiek gyvenime pasitaiko tokiu situaciju, kada keleta kartu reikia lygiai toki pati teksto fragmenta iemest?
Na siaip bent jau is mano praktikos tai pasitaike, gal koki viena ar du kartus, o visais kitais atvejais - niekaip neisisuksi be to iteracijos numerio “i” ;)