人力検索はてな
モバイル版を表示しています。PC版はこちら
i-mobile

たくさんの条件がすべて真であるかをチェックする、美しい方法を教えてください。
例えば以下のようなものです。(perlの場合)

if ($hoge->moge eq "fuga"
&& $moge->fuga =~ /[0-9]+/
&& $hoge->foo != 0
&& $moge->bar == 3
&& $hoge->method1()
&& $moge->method2()
&& $hoge->method3()
&& $moge->method4())
{
........
}

条件が多くなればなるほど見にくいので、すっきりと書ける方法が無いかと思うのですが……

●質問者: Koshian
●カテゴリ:コンピュータ
✍キーワード:BAR EQ hoge Perl
○ 状態 :終了
└ 回答数 : 2/2件

▽最新の回答へ

1 ● seamlessbias
●42ポイント ベストアンサー

以下のようなものはどうでしょうか。

use List::MoreUtils qw/all/;
print 'true'
 if all {$_} $hoge->moge eq "fuga",
 $moge->fuga =~ /[0-9]+/,
 $hoge->foo != 0,
 $moge->bar == 3,
 $hoge->method1(),
 $moge->method2(),
 $hoge->method3(),
 $moge->method4();
◎質問者からの返答

なるほど、これは綺麗ですね。

条件式の付けたしや削除も楽そうです。

調べたらCで書かれたライブラリで、Pure Perlでも動くとのことで、なかなか便利そうですね。


2 ● edo13th
●28ポイント

ちょっとしたテストでしたら、こんな方法もあるかと。

map {chomp; eval or die } <DATA>;

print "ok";


__END__

$hoge->moge eq "fuga"

$moge->fuga =~ /[0-9]

$hoge->foo != 0

$moge->bar == 3

$hoge->method1()

$moge->method2()

$hoge->method3()

$moge->method4())

◎質問者からの返答

うは、こりゃよくも悪くもperl!って感じの解ですねえ。

参考にはなりますが実践するのはためらわれます(笑)

関連質問


●質問をもっと探す●



0.人力検索はてなトップ
8.このページを友達に紹介
9.このページの先頭へ
対応機種一覧
お問い合わせ
ヘルプ/お知らせ
ログイン
無料ユーザー登録
はてなトップ