yap..son vs kıvırcık Ruby blokları için diş teli
Aktif yap..son kullanmalıyım değil beni ikna etmeye çalışan bir iş arkadaşı var ve yerine Ruby çok satırlı blokları tanımlamak için ayraç kullanın.
Sıkıca sadece her şey için tek gömlekleri ve..sonunda kısa kıvırcık parantez kullanarak kamp yapıyorum. Ama daha büyük bir topluluk için bir çözüm elde etmek için ulaşmak istedim.
Hangisi, ve neden? (Bazı gerekirdi kod örneği)
context do
setup { do_some_setup() }
should "do somthing" do
# some more code...
end
end
ya
context {
setup { do_some_setup() }
should("do somthing") {
# some more code...
}
}
Şahsen, sadece yukarıdan bakmak benim için soru cevaplar, ama daha büyük bir topluluk bunu açmak istiyorum.
CEVAP
Genel Kongre tek satır blokları için çok satırlı blok ve ayraç için..sonunda kullanmak için, ama aynı zamanda bu örnek ile gösterilebilir bu ikisi arasında bir fark vardır:
puts [1,2,3].map{ |k| k 1 }
2
3
4
=> nil
puts [1,2,3].map do |k| k 1; end
#<Enumerator:0x0000010a06d140>
=> nil
Bu demektir {}..sonunda daha yüksek bir önceliğe sahiptir, bu yüzden kullanmak istediğinize karar verirken bunu aklınızda tutun.
P. S: tercihlerinizi geliştirirken akılda tutulması gereken Bir diğer örnek.
Aşağıdaki kodu:
task :rake => pre_rake_task do
something
end
gerçekten anlamına gelir:
task(:rake => pre_rake_task){ something }
Ve bu kod:
task :rake => pre_rake_task {
something
}
gerçekten anlamına gelir:
task :rake => (pre_rake_task { something })
Yani istediğiniz gerçek tanımını almak için, ayraç ile, yapmanız gerekir:
task(:rake => pre_rake_task) {
something
}
Belki parametrelerin parantez kullanarak zaten yapmak istediğin bir şey, ama eğer varsa, bu muhtemelen en iyi bu durumda öyle..sonunda bu karışıklığı önlemek için kullanın.
Nasıl Ruby alt veya üst durumda bir di...
Nasıl Ruby rastgele bir sayı almak içi...
Neden Ruby Hariç => e `kurtarmak iç...
Nasıl en iyi Ruby rastgele bir dize ol...
Nasıl bir ruby gem belirli bir sürümün...