を行くすべて1で複数の字句形式をバインドする抽象化の方法:ある意味でそれは大したことではありません繰り返すよう再利用可能な、
sub method1 {
my ($foo, $bar) = _get_things(); # this line...
}
sub method2 {
my ($foo, $bar) = _get_things(); # ...is repeated here
}
が繰り返さラインは、ちょうど1行です。しかし、これは、リスト($foo, $bar)
がこれまでに変更された場合、これらの行をすべて変更する必要があるという欠点があります。 Cでは、この問題を解決するためにプリプロセッサを使用することがあります。 Perlでそれを行うための良いイディオムはありますか?次の擬似perlのような何か:
MACRO_DEFINITION my ($foo, $bar) = _get_things();
sub method1 {
MACRO_CALL
print "hi $foo";
}
sub method2 {
MACRO_CALL
print "hi $foo and $bar";
}
注:私は地元の字句スカラに結合していリストを返す_get_things()
理由は、後者の例に示すように、私は、文字列の補間でそれらを使用したいということです。
私はいくつかのひどい解決策を考えることができますが、良いものはありません。 – melpomene
"リスト($ foo、$ bar)が変更された場合、これらの行はすべて変更する必要があります。" _get_things()はハッシュリファレンスまたはオブジェクトを返すようになっているので、それを排除した。どうして? – ThisSuitIsBlackNot
これらのメソッド、 '$ foo'と' $ bar'を使う方法はありますか?その場合、リファクタリングから始めます。それは、メソッドが別の抽象レベルを持つ必要があることを意味します。または、なぜ名前自体が重要なのですか(これは名前に関するものなのでしょうか)。 – zdim