Alt sınıflı olması amaçlanan bir Moose sınıfım var ve her alt sınıf bir "yürütme" yöntemini uygulamak zorunda. Ancak, sınıfımdaki yürütme yöntemine bir yöntem değiştirici uygulamak istiyorum, böylece tüm alt sınıflardaki yürütme yöntemine uygulanır. Ancak, yöntem geçersiz kılındığında yöntem değiştiricileri korunmaz. Sınıfımın tüm alt sınıflarının benim yöntem değiştiricilere kendi yürütme yöntemlerine uygulanmasını sağlamak için herhangi bir yolu var mı?Perl/Moose'da, tüm alt sınıflardaki bir yönteme nasıl bir değiştirici uygulayabilirim?
Örnek: bunun bir alt sınıfta, sonra
before execute => sub {
print "Before modifier is executing.\n"
}
: Bir üst, ben bu var
sub execute {
print "Execute method is running.\n"
}
yürütmek yöntem çağrıldığında, bu konuda hiçbir şey söylemez "önceki" değiştirici.
Hmm. Üst sınıfımın aslında alt sınıflarının bir yürütme yöntemi bildirmesini bekleyen başka bir Moose olmayan sınıftan miras kaldığını söylemeyi unutmuşum, bu yüzden büyütme/iç çalışmaz. Ama genel olarak bunun çözüm olduğuna katılıyorum. Benim özel problemime gelince, değiştiricimi * çağrıları * yürütme yöntemine koyabildiğimi öğrendim, çünkü bu yöntem alt sınıflarda hiçbir zaman yeniden tanımlanmıyor veya geçersiz kılmıyor. Yani sanırım kabul edildim. –
@Ryan Thompson, Bunu denemedim, ebeveynler ve çocuklar arasında neredeyse boş bir Moose dersi koyabilirsiniz. Ardından "hobbs" yürütme yöntemini Moose adaptör sınıfınıza koyun, diğer her şeyi devralır ve işte oraya gidersiniz. ** Uyarı: Tecavüz edilmemiş, denenmemiş, tüylü bir insanın kötü düşünülmüş düşkünleri - aşırı dikkatle kullanın. ** – daotoad
@Ryan ama süper sınıfı * bir yürütme yöntemini bildirir * ve * sınıfın bir alt sınıfı olmasını bekler * Alt sınıfları bir yürütme yöntemi ilan etmek için, hepsi de büyütme/iç ile koşer. Ağaçta gerçekte yöntem eklendiğinde * * alakasız olmalıdır. – hobbs