比較演算子の書き方で質問です。


変数a の中身が 値A, B, C と等しいかどうか調べるとき

IF a = A, B, C

といった具合に同時に書く記法ってありますでしょうか?

VB.NET での書き方ができたら欲しいですが
他の言語でも、「この言語ではできる」という情報があったら教えてください。

Select Case a
Case A, B, C
End Select
という書き方なら知っていますが、
あえて、"IF文の中" と限定させてください。

よろしくお願いします。

回答の条件
  • 1人5回まで
  • 13歳以上
  • 登録:2010/03/17 10:18:14
  • 終了:2010/03/17 16:42:24

ベストアンサー

id:kmymt No.6

Komi回答回数3ベストアンサー獲得回数12010/03/17 11:07:42

ポイント45pt

Pythonで、以下のように書けます。

if "a" in ("a","b","c"):
	print "hoge"
else:
	print "fuga"

で、結果は"hoge"と出力されます。

以下が参考リンクです。

Python/Snippet/データ操作 – アクセンスのおまけ

id:you_got

おおお Python やりますね!

SQLの in に似てますね。

2010/03/17 11:38:16

その他の回答(8件)

id:aurasoul No.1

aurasoul回答回数4ベストアンサー獲得回数02010/03/17 10:43:31

ポイント8pt

Perlです。実験してみました。


この場合、

a A B C の全てが等しいわけですから、

if($a == $A == $B == $C){ }

と書いてみましたが、内部エラーが起きました。


if(($a == $A) == ($B == $C)){ }

と書くとうまくいきました。


( $ は perl で変数を使うときの記号です )


スマートではない & 間違いがあるかもしれない、

もっと良い回答があればそちらを参考にしてください。

id:you_got

あああ すみません><

「A または B または C と等しいとき」です!

2010/03/17 10:46:15
id:taknt No.2

きゃづみぃ回答回数13539ベストアンサー獲得回数11982010/03/17 10:44:56

ポイント8pt

If a = A And B And C Then

となります。

実際は Aとaは 同一視されてしまうと思いますので、A1とか変数名を変えたほうが いいと思われますが・・・。



id:you_got

すみません。

「A または B または C と等しいとき」です><

2010/03/17 10:46:42
id:HALSPECIAL No.3

HALSPECIAL回答回数407ベストアンサー獲得回数862010/03/17 10:55:48

ポイント16pt

OrElse 演算子はいかがでしょうか?


If a = A OrElse a = B OrElse a = C Then

となります。


http://www.vacant-eyes.jp/Tips/tvb/060.aspx

http://uzgalaxy.com/dotnet/Info-00051/index.html

id:you_got

やっぱり、VBだとそうなりますかね~

'a = ' を3回書きたくないな~と思ってまして

2010/03/17 11:36:55
id:imo758 No.4

imo758回答回数121ベストアンサー獲得回数192010/03/17 10:56:14

ポイント16pt

開発中のperl6で実装を目指しているようです。

if( $a == $A | $B | $C ) {#some code}

http://www.kcrt.net/program/perl6/14junctive.html

id:you_got

おおお 素晴らしい

Perl で開発中ということは、なかなか過去の実例はなさそうですね。

2010/03/17 11:37:21
id:taknt No.5

きゃづみぃ回答回数13539ベストアンサー獲得回数11982010/03/17 10:59:57

ポイント8pt

If a = A Or a = B Or a = C Then

または というのは ORになりますね。

id:you_got

やはり、その書き方が標準ですね

上記にも書きましたが、

'a = ' を3回書きたくないな~と思ってまして

2010/03/17 11:37:50
id:kmymt No.6

Komi回答回数3ベストアンサー獲得回数12010/03/17 11:07:42ここでベストアンサー

ポイント45pt

Pythonで、以下のように書けます。

if "a" in ("a","b","c"):
	print "hoge"
else:
	print "fuga"

で、結果は"hoge"と出力されます。

以下が参考リンクです。

Python/Snippet/データ操作 – アクセンスのおまけ

id:you_got

おおお Python やりますね!

SQLの in に似てますね。

2010/03/17 11:38:16
id:aurasoul No.7

aurasoul回答回数4ベストアンサー獲得回数02010/03/17 11:47:15

ポイント8pt

また Perl ですいません。

検索式にしてしまうとか……。


if($a =~ /^($A|$B|$C)$/){ }


・行頭が A または B または C で始まり、なおかつ

・行末が A または B または C で終わる


という判定です。

id:you_got

おおお 文字列だとこの方法でいけそうですね

なかなかトリッキーで好きですw

2010/03/17 11:59:28
id:ko8820 No.8

ko8820回答回数1221ベストアンサー獲得回数692010/03/17 11:57:23

ポイント16pt

IF 自作関数(a,A,B,C) THEN

自作関数を作って、そこで真か偽を返す。

VB.NETはたしか、変数の数が任意に設定できるはずなので

1つ関数をつくればOKでしょう。

id:you_got

なるほど そういう手もありますね

javascript の prototype みたいに拡張できれば

a.anyEqual(A, B, C) みたいにやりたいですね~

2010/03/17 12:00:23
id:usualoma No.9

usualoma回答回数1ベストアンサー獲得回数02010/03/17 12:05:53

ポイント16pt

Perlだとこういうやり方もあるかもしれません。

「=」を変えれば任意の演算子で比較できます。

$a = 1;
if (grep($a = $_, 1, 2, 3)) {
    print('yes');
}
id:you_got

grep って、こんなこともできるんですか!

勉強になります

2010/03/17 12:42:51
  • id:you_got
    すみません、質問の仕方がわかるかったです。

    「a が A または B または C と等しいとき」を判定したいです。
  • id:usualoma
    9で回答した者ですが、ちょっと追記でコメントしてみます。
    たぶんこういう書き方は各言語であると思いますが、RubyやPHPだとこんな書き方かなと思います。

    ・Ruby (include?メソッドを使って)
    http://gist.github.com/335675
    ・Ruby (クラスを拡張して)
    http://gist.github.com/335677

    ・PHP
    http://gist.github.com/335679
  • id:usualoma
    Cで書いたのを張るのを忘れていました。

    ・C
    http://gist.github.com/335689
  • id:you_got
    ありがとうございます。

    これも、なかなかおもしろい!
    配列として考えるんですね。
    見やすくていいですね〜

この質問への反応(ブックマークコメント)

「あの人に答えてほしい」「この質問はあの人が答えられそう」というときに、回答リクエストを送ってみてましょう。

これ以上回答リクエストを送信することはできません。制限について

絞り込み :
はてなココの「ともだち」を表示します。
回答リクエストを送信したユーザーはいません