LearnYouSomeErlang web kitabından Erlang'ı öğreniyorum. Öğrenirken beni etkileyen tek şey, kısa devreli olmayan boolean bağlacı ve ayırıcı operatörlerdi; and
ve or
. Bu operatörler için kullanım durumları nelerdir? Neden onları andalso
ve orelse
yerine kullanmak istersiniz?Erlang'da kısa devre yapmayan boolean operatörlerinin kullanımı nedir?
cevap
(R13A'ya kadar), andalso
ve orelse
'un özyinelemediği kuyruktur. Detaylar için bakınız http://www.erlang.org/eeps/eep-0017.html. Ben programında and
/or
kullanmak için iyi bir neden olduğunu sanmıyorum.
İlginç bağlantı. Cevap için teşekkürler! – missingfaktor
ve/veya işleçler çok daha eskidir. Andalso/orelse operatörleri daha sonraki eklemelerdir. Basit bir boolean işlemi gerçekleştirmek istediğinizde ve/veya günümüzde bir kullanım durumu olabilir ve yatay alan, birkaç makine döngüsünden tasarruf etmekten daha önemlidir. Örneğin:
X = Y and (A or B),
yerine
X = Y andalso (A orelse B),
daha gözleri biraz daha kolaydır.
Geriye dönük uyumluluk nedeniyle, yalnızca orijinalin davranışını değiştirmek ve/veya kısa devre yapmak mümkün değildi, bu nedenle yeni anahtar kelimeler gerekiyordu. Andalso/orelse isimleri Standart ML'den gelir.
farklı şeyler yapıyor olarak görmek ve bu şekilde bunları kullanmak: istediğim
and
/or
olarak mantıksal operatörler mantıksal değerleri karşılaştırmak için. Sıkı oldukları için otomatik olarak tip kontrolü ve KNOW tam olarak ne denir. C. yılında
andalso
/&&
gibi çok kontrol içinorelse
ve||
görünce hataları ben idam edildikten bilmek iyidir hissetmek erlang tanımlanan ve nasıl gitti edilir.
1. "andalso" ve "orelse" ayrıca mantıksal işleçler olarak kullanılabilir. 2. Tip kontrolünü anlayamadım. 3. Neyin çağrıldığının bilinmesi, şeffaf biçimde şeffaf ifadelerle önemli olmamalıdır; sadece yan etkiler bağlamında geçerlidir. – missingfaktor
Robert'ın söylediği şey, bazen tüm işlenenlerin değerlendirilmeleri için gerekli olmasalar bile istisnalar oluşturabilmeleri için değerlendirilmelerini istersiniz. Bu iyi bir nokta. – dsmith
@dsmith: Evet, her ikisi de ve aslında boole değerlerini döndürdüklerini kontrol etmek için. Belki aşırı derecede temkinli davranıyorum ama hataları olabildiğince erken yakalamak iyi bir şey. – rvirding
- 1. Mantıksal VEYA kısa devre OR operatörü arasındaki fark nedir?
- 2. Haskell'de kısa devre (&&)
- 3. Backtick operatörlerinin sabitliği?
- 4. JavaScript "Kısa devre" değerlendirmesi var mı?
- 5. COALESCE - kısa devre garantili mi?
- 6. java ifadeleri Kısa nedir?
- 7. numpy: boolean indeksleme ve bellek kullanımı
- 8. Kısa devre VE IO Monad içinde
- 9. IN ve JPQL operatörlerinin Üyeliği arasındaki fark nedir?
- 10. C++ Kavramlar Lite: Kavram gövdelerinde kısa devre
- 11. Hiçbir şey yapmayan en zarif lambda ifadesi (eylemi) nedir?
- 12. Feholdexcept vb. Kullanımı nedir?
- 13. mongo.lock dosyasının kullanımı nedir?
- 14. Entitlements.plist dosyasının kullanımı nedir?
- 15. SingletonList kullanımı nedir?
- 16. LOCAL_MODULE_TAGS kullanımı nedir?
- 17. Android'de SQLiteDatabase.CursorFactory kullanımı nedir?
- 18. Android'de BaseColumns kullanımı nedir
- 19. pthread'de PTHREAD_CREATE_JOINABLE kullanımı nedir?
- 20. "??" ifadesinin kullanımı nedir?
- 21. "const" kullanımı nedir?
- 22. kısa + kısa! = Kısa?
- 23. Erlang'de bakım yapmayan değişkenlerle eşleşmeler eşleştirme
- 24. Boolean değerini değiştiren Boolean
- 25. MySQL'deki boolean ve bool arasındaki fark nedir?
- 26. Sanal dizin nedir? Bunun kullanımı nedir?
- 27. Nesneler üzerinde yineleme yapmayan jp'ler
- 28. Boolean
- 29. GrayLog2'de MongoDB kullanımı nedir?
- 30. android içinde MemoryFile kullanımı nedir
"Mantıksal Programlama" ile etiketlendim çünkü bunun, Prolog'da Erlang'ın kökenleri ile ilgili bir şey olduğu söylendi. – missingfaktor
İlgili: [Güvenlik testlerinde 've' andalso'yu ne zaman tercih edersiniz?] (Http://stackoverflow.com/questions/6025132/when-to-prefer-and-over-andalso-in-guard-tests). – kay