LISP - Döngüler
Bir kod bloğu bloğunu defalarca çalıştırmanız gerektiğinde bir durum olabilir. Bir döngü deyimi, bir deyimi veya deyim grubunu birden çok kez yürütmemize izin verir ve aşağıdaki, programlama dillerinin çoğunda bir döngü ifadesinin genel biçimidir.
LISP, döngü gereksinimlerini karşılamak için aşağıdaki yapı türlerini sağlar. Ayrıntılarını kontrol etmek için aşağıdaki bağlantıları tıklayın.
Sr.No. | İnşa ve Açıklama |
---|---|
1 | döngü loopyapı, LISP tarafından sağlanan en basit yineleme biçimidir. En basit haliyle, bazı ifadeleri bulana kadar tekrar tekrar çalıştırmanıza izin verir.return Beyan. |
2 | döngü için Oluşturma döngüsü, diğer dillerde en yaygın olan döngü benzeri yineleme uygulamanıza olanak tanır. |
3 | yapmak Do yapısı, LISP kullanarak yineleme yapmak için de kullanılır. Yapılandırılmış bir yineleme biçimi sağlar. |
4 | nokta zamanları Dotimes yapısı, bazı sabit sayıda yineleme için döngüye izin verir. |
5 | yapılacaklar listesi Dolist yapısı, bir listenin her bir öğesi aracılığıyla yinelemeye izin verir. |
Bloktan Sorunsuz Bir Şekilde Çıkma
block ve return-from herhangi bir hata durumunda herhangi bir iç içe bloktan zarif bir şekilde çıkmanızı sağlar.
blockişlevi, sıfır veya daha fazla ifadeden oluşan bir gövdeye sahip adlandırılmış bir blok oluşturmanıza olanak sağlar. Sözdizimi -
(block block-name(
...
...
))
return-from işlev bir blok adı ve isteğe bağlı (varsayılan sıfırdır) bir dönüş değeri alır.
Aşağıdaki örnek bunu göstermektedir -
Misal
Main.lisp adlı yeni bir kaynak kodu dosyası oluşturun ve içine aşağıdaki kodu yazın -
(defun demo-function (flag)
(print 'entering-outer-block)
(block outer-block
(print 'entering-inner-block)
(print (block inner-block
(if flag
(return-from outer-block 3)
(return-from inner-block 5)
)
(print 'This-wil--not-be-printed))
)
(print 'left-inner-block)
(print 'leaving-outer-block)
t)
)
(demo-function t)
(terpri)
(demo-function nil)
Yürüt düğmesine tıkladığınızda veya Ctrl + E tuşlarına bastığınızda, LISP bunu hemen yürütür ve döndürülen sonuç -
ENTERING-OUTER-BLOCK
ENTERING-INNER-BLOCK
ENTERING-OUTER-BLOCK
ENTERING-INNER-BLOCK
5
LEFT-INNER-BLOCK
LEAVING-OUTER-BLOCK