[#43588] CGIが実行できない(open failed) — Maehara Masahide (前原正英) <maehrm@...>
前原と申します。
9 messages
2007/06/06
[#43602] Performance 比較 Ruby 1.8.6 v.s. JRuby-1.0.0RC3 on Rails — "HISAMATSU, Hiroshi" <hiroshi.hisamatsu@...>
FMSC) 久松と申します。こんばんは
6 messages
2007/06/08
[#43608] Ruby 1.8.6-p36 released — Urabe Shyouhei <shyouhei@...>
Hi all,
12 messages
2007/06/09
[#43615] Re: Ruby 1.8.6-p36 released
— Takahiro Kambe <taca@...>
2007/06/13
こんばんは。
[#43616] Re: Ruby 1.8.6-p36 released
— Nobuyoshi Nakada <nobu@...>
2007/06/14
なかだです。
[#43617] Re: Ruby 1.8.6-p36 released
— Takahiro Kambe <taca@...>
2007/06/14
In message <200706140106.l5E165qW030582@sharui.nakada.kanuma.tochigi.jp>
[#43618] Re: Ruby 1.8.6-p36 released
— Nobuyoshi Nakada <nobu@...>
2007/06/14
なかだです。
[#43619] Re: Ruby 1.8.6-p36 released
— Takahiro Kambe <taca@...>
2007/06/14
In message <200706140229.l5E2Tt5m025493@sharui.nakada.kanuma.tochigi.jp>
[#43626] Re: Ruby 1.8.6-p36 released
— Urabe Shyouhei <shyouhei@...>
2007/06/18
卜部です。
[#43660] C++ extension problem with 1.8.6-p36 (was Re: Re: Ruby 1.8.6-p36 released)
— Takahiro Kambe <taca@...>
2007/06/24
In message <46765550.9070800@ruby-lang.org>
[#43612] [ANN] 第16回 Ruby勉強会@関西(運営:Ruby 関西) — "shoko.m" <shoko-m@...>
まんたにと申します。
1 message
2007/06/13
[#43613] [ANN] 第16回 Ruby勉強会@関西(運営:Ruby 関西) — "shoko.m" <shoko-m@...>
まんたにと申します。
1 message
2007/06/13
[#43627] SWIGとRuby/DLの使い方について — "takeru sasaki" <sasaki.takeru@...>
はじめまして、佐々木ともうします。
7 messages
2007/06/18
[#43637] case when 〜 end 構文での and/or/not 演算子について — "M.Fujii" <boochang@...4.kcn.ne.jp>
藤井と申します。
7 messages
2007/06/20
[#43646] RUBYLIBの影響を排除したい — keiichi matsunaga <ma2@...>
松永です。
6 messages
2007/06/22
[ruby-list:43642] Re: case when 〜 end 構文での and/or/not 演算子について
From:
"M.Fujii" <boochang@...4.kcn.ne.jp>
Date:
2007-06-20 14:47:40 UTC
List:
ruby-list #43642
藤井です。
From: Nobuyoshi Nakada <nobu@ruby-lang.org>
Subject: [ruby-list:43641] Re: case when 〜 end 構文での and/or/not 演算子について
Date: Wed, 20 Jun 2007 22:26:02 +0900
> At Wed, 20 Jun 2007 20:15:29 +0900,
> M.Fujii wrote in [ruby-list:43640]:
> > case 後の式を省略しない場合は when の後に複数の式を書ける構文はなくせな
> > いのはその通りだと思います。以下のようにするのはどうでしょうか?
> >
> > - case の後に式がくる場合の when 節の構文は従来通り
> > - case の後の式を省略した場合の when 節の構文を見直す
> > (こちらの場合では when 節に式を列挙できることに対する必要性は少ない
> > と思います)
>
> 変更自体は簡単ですが、そうする必要性はなんでしょうか。
まず確認させてください。
私は以下の if 〜 end の式(式 A)と、case when 〜 end の式(式B)が等価であ
り、また、こういう書き換えが可能になるように case の後の式を省略する構
文が導入されていると思っているのですが、それは正しいのでしょうか?
# これが間違っているのなら変更の必要性はまったくありません。正しいので
# あれば、等価のようでありながら微妙に違う点を修正するという点で意味の
# ある変更だと思います。
# 式 A
if cond1
expr1
elsif cond2
expr2
else
expr3
end
# 式 B
case
when cond1
expr1
when cond2
expr2
else
expr3
end
式 A と式 B が等価であれば、私は以下の式 C は case when 〜 end を構文を
用いて等価な式 D が書けると思いました。
しかし、実際には式 D は構文エラーとなります。
# 式 C
if cond10
expr10
elsif cond20 and cond30 # 条件式に and 演算子が含まれる
expr20
else
expr30
end
# 式 D
case
when cond10
expr10
when cond20 and cond30 # 条件式に and 演算子が含まれる
expr20
else
expr30
end
そこで、式 D が受理されないのならばどうするのか? case when 〜 end でど
う記述するのが Ruby 的なのか?あるいは、そもそも Ruby ではそういう用途
で case when 〜 end を用いるべきではない、というのが正しいのか?
というのが知りたかったので最初の質問をさせていただきました。
> (1) and, or, not の使用を避け、&&, ||, ! を使用する。
> (2) "when (a and b)" のように括弧を適用する。
> (3) case when 〜 end のような構文を使わず、普通に if 〜 elsif 〜 end
> を用いる。
> (4) 上記以外の何か。
(1) では式 C 相当の処理を case when 〜 end で式 E のスタイルで記述する
ことになります。
(2) では式 C 相当の処理を case when 〜 end で式 F のスタイルで記述する
ことになります。
(3) では式 C 相当の処理を記述するのは、無理して case を使わず、式 C の
のように if のままでいいではないか?ということになります。
# 式 E
case
when cond10
expr10
when cond20 && cond30 # and 演算子ではなく && 演算子を用いる
expr20
else
expr30
end
# 式 F
case
when cond10
expr10
when (cond20 and cond30) # 条件式に and 演算子が含まれる場合は括弧で囲う
expr20
else
expr30
end
そして、case when 〜 end 構文が if 〜 elsif 〜 end 構文の代替となる存在
であるのなら、case の後の式を省略した場合には上記の "when cond20 and
cond30" のようなコードが許した方が良いのではないかと思い以下の要望の書
き足した次第です。
> また、"when a and b" のような記述が受理されるように構文を見直していただ
> ければ幸いです。
--
藤井 正行 / Masayuki FUJII