Yani, Python (Ben birçok dilde uygulanabilir düşünüyorum rağmen) içinde, oldukça sık böyle bir şey ile kendimi bulmak:küçük bir kod fazlalık (temiz hissetmez)
the_input = raw_input("what to print?\n")
while the_input != "quit":
print the_input
the_input = raw_input("what to print?\n")
Belki de çok seçici davranıyorum, ama the_input = raw_input("what to print?\n")
hattının tekrarlanmasını nasıl istemiyorum. Sürdürülebilirliği ve organizasyonu azaltır. Ancak, sorunu daha da kötüleştirmeden çift koddan kaçınmak için herhangi bir geçici çözüm göremiyorum.
while ((the_input=raw_input("what to print?\n")) != "quit") {
print the_input
}
Bu değil Pythonic kesinlikle, ve Python hatta AFAIK döngü koşulları dahilinde atama için izin vermez: Bazı dillerde, böyle bir şey yazabiliriz.
Bu geçerli kod
,while 1:
the_input = raw_input("what to print?\n")
if the_input == "quit":
break
print the_input
fazlalık düzeltir Ama çok haklı ya hissetmez. while 1
, bu döngünün sonsuza kadar çalışacağını ima eder; Bir döngü kullanıyorum, ama ona sahte bir durum vermek ve içindeki gerçek olanı koymak.
Çok seçici miyim? Bunu yapmanın daha iyi bir yolu var mı? Belki de bilmediğim bir dil yapısı var mı? soyutlamaların çok düşük seviyelerde hariç Python
for the_input in iter(lambda: raw_input('what to print?\n'), 'quit'):
print the_input
Çoğu döngüler, iyi bazı ast yardımıyla for
döngüler olarak uygulanır: örneğin, bu özel durumda -
İlk formun kesinlikle kabul edilebilir olduğunu düşünüyorum. –
Bu, [döngü ve yarım] olarak adlandırılan ortak bir modeldir (http://www.cs.duke.edu/~ola/patterns/plopd/loops.html#loop-and-a-half). –