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
"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