R.Tanaka.Ichiro's Blog

主にC# な話題です

目次

Blog 利用状況

ニュース

同じ値であること(その3)

http://blogs.wankuma.com/rti/archive/2008/10/20/159277.aspx
同じ値であること
http://blogs.wankuma.com/rti/archive/2008/10/22/159620.aspx
同じ値であること(その2)

の続きです


「前回までのあらすじ」

i = j = k = 5;

みたいに書けるけど、比較するときは、i == j == k のように書けない。
唯一 bool  型なら書けるが、i == j == k は 3 値が同じであることを表すものではない。


結局、この書き方をしたいのもコードの可読性をあげたいことが目的なのだから、

同じ目的の汎用メソッド

を作ってしまっても大差ないように思えてきました。

ジェネリクスと LINQ を使えば、以下のようにサクッと書けますね。


public static bool 全部同じ<T>(params T[] p) {
  return !p.Any(x => !x.Equals(p[0]));
}


以下のように書けるので、目的としては、これでいいかなとも思う。

Console.WriteLine(全部同じ(a, b, c) ? "true" : "false");

 

投稿日時 : 2008年10月24日 13:28

Feedback

# re: 同じ値であること(その3) 2008/10/24 14:35 渋木宏明(ひどり)

>これでいいかなとも思う。

むしろ、こっちの方がいいと思う。

i = j = k と i == j == k は字面が似てるだけで、実際には別の操作だし。

「見た目が似てる」だけだと、「~のような動作をしないものなのだろうか?」という根拠としては少し弱いと思う。

# re: 同じ値であること(その3) 2008/10/27 14:12 R・田中一郎

最初は、直観的で良いと思ったのですよ。

しかし i == j == k の動きがわかると「このような書き方ができたら良いのに」と考えることに無理があるような気がしてきますね。

# re: 同じ値であること(その3) 2008/11/08 15:25 Gates

イコールよりも範囲条件式が欲しいね。
(最小値 <= x <= 最大値)

# re: 同じ値であること(その3) 2008/11/10 10:03 R・田中一郎

こんなのも欲しい。
COBOL だと書けるんですよ。

(X == 5 || 6 || 7)

タイトル
名前
Url
コメント