[#6617] Re: IPv6 ruby — Jun-ichiro itojun Hagino <itojun@...>

26 messages 1999/04/15
[#6672] Re: IPv6 ruby — matz@... (Yukihiro Matsumoto) 1999/04/28

まつもと ゆきひろです

[#6673] Re: IPv6 ruby — itojun@... 1999/04/28

[#6674] Re: IPv6 ruby — matz@... (Yukihiro Matsumoto) 1999/04/28

まつもと ゆきひろです

[#6675] Re: IPv6 ruby — itojun@... 1999/04/28

[#6676] Re: IPv6 ruby — matz@... (Yukihiro Matsumoto) 1999/04/28

まつもと ゆきひろです

[#6677] Re: IPv6 ruby — itojun@... 1999/04/28

[ruby-dev:6556] Re: [ruby-list:13297] Re: alternative name of iterator

From: Wakou Aoyama <wakou@...>
Date: 1999-04-06 04:42:42 UTC
List: ruby-dev #6556
青山です。

Mon, Apr 05, 1999 at 02:49:36PM +0900 において
Yukihiro Matsumoto さん曰く:

> |$ ruby -e '
> |STDOUT.print ARGF.collect do |line|
> |               line.upcase
> |             end
> |'
> 
> には今回は対応していません.というか,この場合,ブロックが
> printにつくかcollectにつくかというのは非常に重要な問題でそれ
> ほど気軽に変更できるとは思えません.非互換だし.
> 
> こちらの採用には ruby-dev での議論が必要だと考えます.
> 
> |もう一息でしょうか。ぜひ前者もよろしくお願い致します。
> 
> 以前,青山さんの提案されたように do と {} を完全な置き換え可
> 能なものにしてしまうと,青山さんの理想は実現できるのですが,
> まだ決心には至っていません.

という事で、dev に移動します。

移動ついでに do .. end と { .. } について再整理します。
(主に [ruby-list:13089] の再引用ですが)

リファレンスマニュアルより
> foobar a, b do .. end   # foobar がイテレータとして呼び出されます
> foobar a, b { .. }      # b がイテレータとして呼び出されます

do .. end と { .. } の差がこれだけであるとすると、do .. end の優先順位
を { .. } と同じにした場合の非互換性とは、

foobar a, b do .. end

を

foobar(a, b) do .. end

と書かなければならないという点です。

この点については、lib/* および sample/* においては foobar a, b do .. end
という記述はみあたらず、foobar(a, b) do .. end は多数みうけられます。

従って、非互換性が発生した場合の影響、および、その後での記述の変更によ
る違和感はそれほど無いと思われます。

一方、do .. end を { .. } と同じ優先順位にした場合、

$ ruby -e '
STDOUT.print ARGF.collect do |line|
               line.upcase
             end
'

このような記述を { .. } に書き換える必要が無くなり、いつでも do .. end
を利用する事ができるようになります。

また、現在の優先順位のままでは(バグかもしれませんが)、() でくくってやっ
ても期待するように動作しないという場合もあるようです。

$ ruby -e '
> STDOUT.print (
>   ARGF.collect do |line|
>     line.upcase
>   end
> )
> '
/tmp/rba03069:3: parse error
  ARGF.collect do |line|
                 ^
/tmp/rba03069:5: parse error

という感じですが、いかがでしょうか? みなさん。


-- 
青山 和光 Wakou Aoyama <wakou@fsinet.or.jp>

In This Thread

Prev Next