Ruby'de blokları seçmek do end
ve { }
bloklar için iki yaygın stil vardır :
İlk ve çok yaygın olan stil Ruby on Rails tarafından popüler hale getirildi ve tek ve çok satırlı basit bir kurala dayanıyordu:
{ }
Tek satırlık bloklar için parantez kullanın
do end
Çok satırlı bloklar için kullanın
Bu mantıklıdır çünkü do / end tek satırda kötü okur, ancak çok satırlı bloklar }
için kendi satırında asılı bir kapanış bırakmak end
, modül, sınıf ve yöntem tanımları ( def
vb .) Ruby'de kullanılan diğer her şeyle tutarsızdır. .) ve kontrol yapıları ( if
, while
, case
vs.)
İkinci, daha az görülen tarz, son dönem büyük yakut yazarı Jim Weirich tarafından önerilen semantik veya " Weirich Braces " olarak bilinir :
do end
Prosedürel bloklar için kullanın
{ }
Fonksiyonel bloklar için parantez kullanın
Bu, blok dönüş değeri için değerlendirildiğinde , {}
zincirlenebilir olması gerektiği ve parantezlerin yöntem zincirleme için daha anlamlı olduğu anlamına gelir .
Öte yandan, blok kendi için değerlendirildiğinde yan etkileri , o zaman dönüş değerinin bir önemi yoktur ve blok sadece bir şeyi "yapıyor", dolayısıyla zincirlenmenin bir anlamı yok.
Sözdizimindeki bu ayrım, bloğun değerlendirilmesi ve geri dönüş değerini önemsemeniz gerekip gerekmediği hakkında görsel bir anlam taşır.
Örneğin, burada bloğun dönüş değeri her öğeye uygulanır:
items.map { |i| i.upcase }
Ancak burada bloğun dönüş değerini kullanmıyor. Prosedürel olarak çalışıyor ve onunla bir yan etki yapıyor :
items.each do |item|
puts item
end
Anlamsal stilin bir başka yararı da, bloğa bir satır eklendiği için parantezleri yapmak / sonlandırmak için değiştirmenize gerek olmamasıdır.
Bir gözlem olarak, tesadüfen işlevsel bloklar genellikle tek satırlıdır ve prosedür blokları (örneğin yapılandırma) çok satırlıdır. Böylece, Weirich stilini takip etmek, neredeyse Rails stili ile aynı görünmeye başlar.