Şu anda büyük ölçüde aynı şeyi yapan bir dizi adımda yineleme yapmanız gereken bir uygulama yapıyorum, çok az miktarda kod (~ 15 satır) kaydedin. Adım sayısı, projenin nasıl yapılandırıldığına bağlı olarak değişecektir, bu yüzden her bir potansiyel örnek için ayrı bir işlev oluşturmam benim için aptalca görünebilir.Sözlükde İşlevleri Kaydetme [Python]
var switches = [true, true, false, true];
var holder = {
0: function() { /* do step0 */ }
1: function() { /* do step1 */ }
2: function() { /* do step2 */ }
3: function() { /* do step3 */ }
// ...etc...
}
for (var i = 0; i < switches.length; i++)
if (switches[i])
holder[i]();
python buna benzer bir şey yapmak için bir yolu var mı:
JavaScript'inizde, böyle bir şey yapsın ki? Ben adımların herhangi önemli sayıda varsa
switches = [True, True, False, True]
class Holder(object):
@staticmethod
def do_0():
# do step0
@staticmethod
def do_1():
# do step 1
# ...etc...
def __repr__(self):
return [self.do_0, self.do_1, ...]
for action in Holder:
action()
Bu sadece korkunç verimsiz görünmektedir: Aklıma gelen tek şey böyle bir şeydir. Bu konuda daha iyi bir yolu var mı? aşağıdaki gibi
Bir dekoratör ne istediğine uygun olabilir –
Bunu yapmanın en iyi yolu ne olurdu? Tüm fonksiyonları aynı dekoratörle tanımlarım halinde, içinden geçecek bir liste oluşturmadan, bunlarla döngü yapmanın kolay bir yolu var mı? –