けいじゅ@日本ラショナルソフトウェアです.

In [ruby-dev:17660] the message: "[ruby-dev:17660] Re: substitution at
when-clause", on Jul/04 17:37(JST) nobu.nakada / nifty.ne.jp writes:

>なかだです。

>なんとなく
>
>  for v where x.kind_of?(v)
>
>なんてのを思い付きました。ただこの後にwhenが来るのはおかしいよ
>うな気もしますが。

うーん. 気持はわかりますが, やはりwhenとの関係が...

>#   for v if x.kind_of?(v)
># 
># はちょっとヘンすぎかも。

新しい予約語が増えないのは良いんでしょうが...

この構文はかなり使いでがありますね:

1.
val = ...
for ary case ary.include?(val)
when [1, 2]
when [3, 4, 10]
  ...

これなんか結構使えそう.

2.
val = ...
for range case range.first <= val && val < range.last
when 1..2
when 2..3
  ...

caseだと === しますので, 上記のようなちょっと変えたいときにはかなり便
利.

3.
for opt case ARGV.include?(opt)
when "-o"
when "-f"
  ...

1と似ていますが, パラメータが逆になっています.

4.
obj = ...
for klass case obj.instance_of?(klass)
when Integer
  ...

Class#=== は kind_of? ですが, instance_of? に変更も簡単.


あとなんか事例はないかなぁ... 事例募集中!!

__
..............................石塚 圭樹@日本ラショナルソフトウェア...
----------------------------------->> e-mail: keiju / rational.com <<---