Uzun lafın kısası, bir seçenek argümanı içeren bir yöntem yazıyordum; anahtar için değer: true olarak değerlendirilirse. Yeni sözdizimi kullanılarak IRB karma çalışırken ben lRB bir yazım hatası var istemi kalır açmak:IRB - Ruby 1.9.x karma sözdizimi: {if: true} eşittir {: if => true}
1.9.3p374 :010 > {if: true}
1.9.3p374 :011?>
eski sözdizimi kullanarak, işleri gayet güzel:
1.9.3p374 :011 > {:if => true}
=> {:if=>true}
Tüm anahtar kelimeleri o Bir deyim başlatın, aynı davranışı sergileyin. Örneğin. def
, do
, module
, ortada meydana case
Diğer ayrılmış kelime ve sadece iyi class
eser: else
, end
Sorum şu: Bu beklenen davranış, bir hata ya da bir sınırlama var mı?
'irb' biraz kırılgandır ve oldukça fazla miktarda beyin hasarı vardır, muhtemelen bunlardan bazılarını görüyorsunuz. –
@muistooshort bu oldukça asılsız görünüyor. echo, {if: true} .inspect '> test.rb; ruby test.rb' döndürür: 'test.rb: 1: sözdizimi hatası, beklenmedik ':'' Hangi moda 'irb' kırılgan? – nzifnab
@nzifnab Irb, ifadeyi "son" 'a kadar yürütmeyi sürdürmelidir ve eğer bir kontrol operatörünü (burada olduğu gibi) yanlış yorumluyorsa, kendisine özgü ek sorunlar vardır. – coreyward