調用方法我有方法的哈希表:perl的 - 從哈希
my %makefileMacroSimplifiers = (
"or" => \&makefileSimplifyOr,
"and" => \&makefileSimplifyAnd,
"strip" => \&makefileSimplifyStrip,
);
sub makefileSimplifyStrip {
my $self = shift;
my $prefix = shift;
my $paramsRef = shift;
...
}
每個方法需要$self
。我所擁有的是:
$makefileMacroSimplifiers{$macroName}->($self, $macroName.$ws1, \@parms);
這似乎是工作,但似乎有點奇怪我在$self
明確地傳遞給方法。有沒有更好的方法來做到這一點,或者這是否被認爲是一種正常的編碼習慣? (我沒有找到更好的方法在網絡上做到這一點,但我想我會問,如果我沒有使用正確的搜索條件)。
我認爲你必須通過'$ self'是的。也就是說,如果你是從同一個類中的另一個方法調用方法。通常當你調用方法的時候,你會得到一個祝福的對象引用(使用語法'$ obj-> method(...)'),然後你不需要傳遞'$ self'。 –
你需要顯示調用方法。 '$ macroName'和'$ ws1'從哪裏來? – Borodin
'$ macroName'和'$ ws1'是解析輸入文件的結果。在這種情況下,'$ macroName'將是'strip','$ ws1'是'strip'後面的空白。 (好吧,從技術上說,在一個makefile中,'strip'是一個函數而不是宏,但我試圖保持與程序中的C對應的命名一致)。 – user2766918