Bunu bir yerde okuduğumu hatırlıyorum notve !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 andve or.
!tüm işleçler arasında en yüksek önceliğe sahiptir ve en notdüşü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, notdaha düşük bir önceliğe sahiptir true && false, bu nedenle bu, ' falsedan' true && falseye "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.
unlessBu durumda kullanabilir misiniz ?
unlessRuby 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.
unlessbeğenilmediğine katılmıyorum . Fikir birliğine en yakın olan şey aksini söylüyor.
notolabileceğ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 yalır syntax error, unexpected tIDENTIFIER, expecting '('. Öncelik sırası bu işe atama op sağında parantez ihtiyacı anlamına gelir: x = (not y).