13 Ocak 2011, PERŞEMBE
Neden kürek operatörü (&;< lt;) ruby'de bir dize oluştururken artı bir eşittir ( =) tercih?
Ruby Koanları ile çalışıyorum.
test_the_shovel_operator_modifies_the_original_string
Öyküsündeabout_strings.rbaşağıdaki yorum içerir:
Ruby programcıları kürek operatörü lehine eğilimindedir (&;< lt;) artı dizeleri geliştirirken operatörü ( =) eşittir. Neden?
Benim tahminim hız gerektirir, ama kürek operatörü daha hızlı olması neden olabilecek başlık altında eylem anlamıyorum.
Biri bu tercihi arkasındaki bilgi lütfen açıklayabilir ki?
CEVAP
13 Ocak 2011, PERŞEMBE
Kanıt:
a = 'foo'
a.object_id #=> 2154889340
a << 'bar'
a.object_id #=> 2154889340
a = 'quux'
a.object_id #=> 2154742560
<<
yeni bir tane oluşturmak yerine özgün dize değiştirir. Bunun nedeni, ruby a = b
atama a = a b
(aynı <op>=
diğer operatörler için de geçerli) için sözdizimsel steno olmasıdır. Diğer yandan <<
alıcı-yer değiştiren concat()
Bir diğer adıdır.
Bunu Paylaş: