| | = Ne (veya-eşittir) Ruby?
Aşağıdaki kodu Ruby ne demek?
||=
Sözdizimi için herhangi bir anlamı ya da sebebi var mı?
CEVAP
Kabul cevabı bir cevap deneyeceğim bu kadar gizemli ve doğrudan cevap vermek yerine dış kaynaklardan okuyucuya gönderir.
a ||= b
"". koşullu atama operatörü birtür-ama-değil-tamamen( * ) a || a = b
steno.
"Anlamına gelireğer a
yanlış, sıfır veya tanımsız ise, o zaman b
Değerlendirme ve sonuç a
ayarlayın". Ruby'nin kısa devre değerlendirme a
tanımlanmış ve doğru olarak değerlendirilirse, o zaman operatörün sağ tarafında değerlendirilir ve atama gerçekleşir anlamına gelir. Bu ayrım ise a
b
yerel değişkenler de önemli değildir, ama eğer bir ya da sınıf alıcı/ayarlayıcı bir yöntem ise, bu önemli.
Örneğin:
> a ||= 1;
=> 1
> a ||= 2;
=> 1
> foo = false;
=> false
> foo ||= true;
=> true
> foo ||= false;
=> true
Karışıklığa yol açacak, diğer atama operatörleri ( =
) benzer ama farklı davranır.
a = b
&yani; a = a b
a ||= b
&yani; a || a = b
Görünüşe göre nüanslar, özel durumlar, özel durumlar vardır ama özü bu.
* - Ama-değil-tamamen sıralama
Olarak ajedi32 tarafından dikkat çekti:
a ||= b
⇔a || a = b?
Bu ifadelerin davranış
a
tanımsız yerel bir değişken olduğunda farklıdır. Bu durumda,a ||= b
a || a = b
NameError: undefined local variable or method 'a' for main:Object
yükseltecektir iseb
(b
değerlendirme)a
ayarlayın.
Daha fazla bilgi için:
Neden kürek operatörü (&;< lt;) ruby...
Arasındaki fark "veya" Ruby ...
ruby dize, tamsayı veya kayan noktalı ...
Nasıl Ruby alt veya üst durumda bir di...
Nasıl Ruby ikili dize veya tamsayı dön...