Bunu bir yerde okuduğumu hatırlıyorum not
ve !
farklı değerlendiriliyor ve bunu belgelerde bulamıyorum. Eşanlamlılar mı?
Yanıtlar:
Neredeyse eşanlamlıdırlar, ancak tam olarak değiller. Fark olmasıdır !
daha yüksek önceliğe sahiptir not
çok gibi, &&
ve ||
daha yüksek önceliğe sahiptir and
ve or
.
!
tüm işleçler arasında en yüksek önceliğe sahiptir ve en not
düşük olanlardan biridir , tam tabloyu Ruby belgelerinde bulabilirsiniz .
Örnek olarak şunları düşünün:
!true && false
=> false
not true && false
=> true
İlk örnekte, !
en yüksek önceliğe sahiptir, yani etkili bir şekilde söylüyorsunuz false && false
.
İkinci örnekte, not
daha düşük bir önceliğe sahiptir true && false
, bu nedenle bu, ' false
dan' true && false
ye "değiştirildi" true
.
Genel kural !
, kullanmak için belirli bir nedeniniz olmadıkça, bağlı kalmanız gerektiği gibi görünüyor not
. !
Ruby'de diğer birçok dilde aynı şekilde davranır ve bundan "daha az şaşırtıcı" dır not
.
unless
Bu durumda kullanabilir misiniz ?
unless
Ruby dünyasında pek tercih edilmiyor. Genel fikir birliği, !
çoğu durumda olduğu gibi işe yaradığında sadece yoluna girmesidir. Eminim daha anlamlı olmayacak durumlar vardır, ama ben net konuşuyorum.
unless
beğenilmediğine katılmıyorum . Fikir birliğine en yakın olan şey aksini söylüyor.
not
olabileceğine dair bir örnek paylaşmak istedim . Python'da, if ifadelerinin okunmasını kolaylaştırmak için bazen değişkenlere boole atarım. Bu x = not y
, y'nin karmaşık bir şey olduğu kalıbı kullanmak anlamına gelebilir . Ruby'de x = !y
çalışır, ancak x = not y
alır syntax error, unexpected tIDENTIFIER, expecting '('
. Öncelik sırası bu işe atama op sağında parantez ihtiyacı anlamına gelir: x = (not y)
.