• 締切済み

変数が大量にありすぎて美しくない!

私は、こういうコードをよく書きます。 my $TDN = &func_hatten(8,10); my $TON = &func_hatten(2,55); my $MUR = &func_hatten(4,55); my $YJSNPI = &func_hatten(7,55); my $HOGE1 = &func_hatten(1,55); my $HOGE2 = &func_hatten(9,55); my $HOGE3 = &func_hatten(1,55); my $HOGE4 = &func_hatten(9,55); 変数に、関数の戻り値を放り込むのですが、これが30個、40個もひとつのコードに書き込むのは美しくないような気がしています。 こういう場合は、プロの世界ではどうするのが「一般的」でしょうか?

みんなの回答

  • TANUKIA
  • ベストアンサー率37% (13/35)
回答No.5

追記。 戻り値に直接名称が必要な場合はハッシュを使うなどの方法があります。 戻り値関係なく、引数側だけに ('TDN', 8, 10)とすることでも双方向参照が可能になります。 大量であるならば検索に時間はかかるので不適切でしょうが。

  • TANUKIA
  • ベストアンサー率37% (13/35)
回答No.4

かなり省略。 @ary2 = grep { [$f->($_),] } @ary1; # $ary1[$a] は $ary2[$a] と対応する。 # これだけでもたぶん動くとは思いますが、 # 見てのとおり概念的なイメージです。使いやすいように(使えるように)してお使いください。

回答No.3

データとコードを分けるとか。 以下、表示がくずれるので空白2文字を全角にしていることに注意 use strict; use warnings; my %actor_of = (   TDN => { args => [ 8, 10 ] },   TON => { args => [ 2, 55 ] },   MUR => { args => [ 4, 55 ] } ); for my $actor (keys %actor_of) {   $actor_of{$actor}->{return} = do_hoge( @{ $actor_of{$actor}->{args} } );   print $actor, ": ", $actor_of{$actor}->{return}, "\n"; } sub do_hoge {   return $_[0] . ', ' . $_[1]; } --- $ perl -w foo.pl TON: 2, 55 MUR: 4, 55 TDN: 8, 10

回答No.2

戻り値を格納した変数を、この後でどう使うかで決まります。 ループ内で使うのなら、配列に入れといたほうがいとか、 なにかのキーを使って処理するならハッシュに入れたほうが使いやすいとか。

  • ok-kaneto
  • ベストアンサー率39% (1798/4531)
回答No.1

それぞれの変数は目的があっての事ですよね。 一般論では「変数の使い回しはメリットがない」ですね。なので目的が違う変数であればその数だけ用意するのが普通です。なので問題はないです。 PHPならJSONで受け渡ししたりクラスで受け渡ししたりするのもありますけどねー。関数がまとめられなければ難しいですけど。

関連するQ&A