SORU
15 HAZİRAN 2009, PAZARTESİ


| | = 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
4 ŞUBAT 2013, PAZARTESİ


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 ||= ba || 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 ise b (b değerlendirme) a ayarlayın.

Daha fazla bilgi için:

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

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • hitcreatormusic2

    hitcreatormu

    21 Mayıs 2010
  • Joseph Hayhoe

    Joseph Hayho

    20 Mayıs 2010
  • Kenneth Håkonsen

    Kenneth Håk

    13 Mart 2011