Bugün Pharo içinde yürütülmesi öğrendim (!).Süreç sonlandırılırsa, tüm güvenlik bloğunun yürütülmesi tamam mı?</p> <pre><code>[v := 1] ensure: [self halt. v := 2] </code></pre> <p>biz <code>halt</code> pencerede işleminden vazgeçmesi dahi <code>v = 2,</code> ayarı sona erecek:
bu tartışmalı buluyorum. Benim için #ensure:
anlamsallığı dizisi
self halt. v := 2
, alıcı bloğu ile bağımsız koşullar, bağımsız değişken blok arasında olup bağımsız olarak mantık yürütür edilmesi gerektiği anlamına gelir. Ve #halt
mantığı süreci sonlandırma olayını içerdiğinden, ikinci cümlenin obstinate değerlendirmesini müdahalede buluyorum. (. #halt
ile aynı) ZeroDivide
durum attı makyaj I v
değeri 2
olduğu hala hata ayıklayıcı ve kapalı
[v := 1] ensure: [1/0. v := 2]
Son olarak
I:
Sonraki Aşağıdaki çalıştı değerlendirdi:
[v := 1] ensure: [n := 1/0. v := v + n]
ve ZeroDivide
üzerine ayıklayıcısını kapalı istisna. Bu kez v
değeri 1
idi, ancak v + n
'un değerlendirilemediği gerçeğinden bir istisna yapıyorum. Başka bir deyişle, hata sessizce devam etti.
Yani benim sorudur. Bu davranışın ardındaki mantıklı nedir? Süreç sadece "normal" koşullar altında sona erdirilmemeli, yani, #ensure:
'un dahil edilmemesi gerekir mi?
Sorunuzu pharo geliştiricileri posta listesinde göremiyorum. Buradan çok daha uygun olurdu (ve gıcırdayanlardan) –
@StephanEggermont: Posta listesine uygun _also_ olması, burada _inappropriate_ yapamaz. Benim görüşüme göre, bu posta listelerinde çok fazla bilgi kayboluyor ... onlar sadece herkesin işi değil. ;-) –
Bu uygunsuz çünkü cevaplar değil tasarım tartışma tartışmalarına ihtiyaç duyuyor. Bunun için posta listelerini kullanıyoruz, SO değil. Burada yinelenen şeyler gayet iyi, fakat merkezi nokta ise (daha iyi bir şey yapana kadar) e-posta listesini tutuyor. –