SORU
26 NİSAN 2012, PERŞEMBE


Hiçbir koşul ise Perl:

** 12, göre while deyimi ifadesi true olduğu sürece blok yürütür. Boş bir ifade ile sonsuz bir döngü olur merak ediyorum:

while () { # infinite loop
 ...
}

Sadece doktor yanlışlık mı?

CEVAP
26 NİSAN 2012, PERŞEMBE


$ perl -MO=Deparse -e 'while () { }'
while (1) {
    ();
}
-e syntax OK

while () {} while (1) {} eşdeğer gibi görünüyor. Ayrıca boş parens* boş blok eklenir unutmayın.

Önceden tanımlanmış derleyici davranış: bir başka örneği

$ perl -MO=Deparse -e 'while (<>) { }'
while (defined($_ = <ARGV>)) {
    ();
}
-e syntax OK

Bu sadece doktorlara özel bir durum değil, rapor olduğunu söyleyebilirim.

* -; hassas, stub işlem kodu eklenir. Hiçbir şey yapmaz, ama enterloop işlem kodu için git bir hedef yapar. Bu not için gerçek bir sebep yok. Deparse parens kodu oluşturmak olmadığından stub bu operasyon boş parens kullanarak gösterir.

Bunu Paylaş:
  • Google+
  • E-Posta
Etiketler:

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • Dirty Loops

    Dirty Loops

    21 Mayıs 2007
  • KoreanFrogMania님의 채널

    KoreanFrogMa

    18 Aralık 2011
  • Matt Stokes

    Matt Stokes

    22 Ocak 2008