我只是討厭如何CGI::Application的CGI
對象的訪問器被稱爲query
。在Perl中,子類在基類中爲方法別名的正確方法是什麼?
我希望我的實例類能夠使用名爲cgi
的訪問器來獲取與我的CGI::Application
子類的當前實例關聯的CGI
對象。
下面是我在做什麼一個自包含的例子:
package My::Hello;
sub hello {
my $self =shift;
print "Hello @_\n";
}
package My::Merhaba;
use base 'My::Hello';
sub merhaba {
goto sub { shift->hello(@_) };
}
package main;
My::Merhaba->merhaba('StackOverflow');
這是工作,因爲我認爲它應該和我看不出有任何問題(比如,如果我想從My::Merhaba
繼承:子類不需要知道任何關於merhaba
)。
難道是更好/更正確的寫
sub merhaba {
my $self = shift;
return $self->hello(@_);
}
什麼是使用goto &NAME
混疊方法名稱的目的的優勢/劣勢?有沒有更好的辦法?
注:如果你有一種衝動,有迴應goto
是邪不這樣做,因爲這使用Perl的goto
的比你心裏有什麼不同。
我沒有看到使用'goto&NAME'這種方式。 'sub {}'包裝器向調用堆棧添加一個新的框架。你也可以直接調用這個方法。 – 2010-02-15 22:25:09
@Michael Carman在@Eric Strom的答案的第一部分中使用'can'消除了我相信的問題。 – 2010-02-15 22:35:31
我只是對'Method :: Alias'的任何進展感到好奇。 – 2010-04-01 20:34:21