Birkaç anahtar alan bir komut satırı programının bir Perl 6 uygulamasıyla uğraşıyordum. MAIN
imzası oldukça ilgiliydi ve biraz dağınıktı.Perl 6'da imza olarak bağımsız bir İmza kullanabilir miyim?
# possibly big and messy signature
my $sig;
BEGIN { $sig = :(Int $n, Int $m) };
multi MAIN ($sig) {
put "Got $n and $m";
}
imza
MAIN
önce ayarlanmış olsa imza değişkenleri görmez
MAIN
derler
:
kullanmak ne altyordamını başka bir yere imza tanımlamak ve anlamanın bir yolu olup olmadığını merak===SORRY!=== Error while compiling /Users/brian/Desktop/signature.p6
Variable '$n' is not declared
at /Users/brian/Desktop/signature.p6:7
Bu tür bir şeyin, derleme zamanından sonra çeşitli yöntemler oluşturmak ve çeşitli etkenlere dayalı imzaları seçmek için kullanışlı olabileceğini düşündüm.
', sen bağlı bir imzayla (muhtemelen anonim) rutinleri yeniden olmalı ve örneğin, istediğiniz ismi ile yüklediği İmza, bu asla işe yaramayacak. Bunu yapmanın yolu düşük seviyeli ve uygulamaya özgü olacaktır. Bunu genel bir imzaya sahip olmaya çalışacağım ve ayrıştırıldıktan sonra imzayı zorla değiştireceğim. Bu, çoklu dağıtıcıyı değiştirmek için teçhizatı görmezden geliyor. –
İşlev içindeki değişkenlerin "değişken bildirilmemiş" hatalarını atmaması için, bunun bir makro gibi bir derleme zamanında yapılması gerekir. Ne yazık ki, Perl 6 için planlanan makro/argo işlevselliği henüz gerçekleşmemiştir. – smls
Bir yan not: Üst düzey kapsamda bir değişken bildirebilir ve BEGIN fazörünün bloksuz biçimini kullanarak bir ifadede BEGIN zamanında başlatabilirsiniz: 'BEGIN my $ foo = ...;' – smls