SORU
7 NİSAN 2011, PERŞEMBE


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
7 NİSAN 2011, PERŞEMBE


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.

Bunu Paylaş:
  • Google+
  • E-Posta
Etiketler:

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • How It Should Have Ended

    How It Shoul

    5 Mart 2007
  • Official Clouds

    Official Clo

    1 HAZİRAN 2011
  • TopOfTheTech

    TopOfTheTech

    5 NİSAN 2010