From: Hirotsugu Asari Date: 2009-06-08T07:18:23+09:00 Subject: [ruby-dev:38579] Re: Arrary.newにbreakを含むブロックを渡した時の挙動について 浅里です。 On Jun 7, 2009, at 5:03 PM, Yukihiro Matsumoto wrote: > まつもと ゆきひろです > > In message "Re: [ruby-dev:38576] Arrary.newにbreakを > 含むブロックを渡した時の挙動について" > on Mon, 8 Jun 2009 03:59:04 +0900, Hirotsugu Asari > writes: > > |題目に沿ってArrayを生成しようとしてbreakするとbreak > に > |渡された値が無条件に返ってきます。これは仕様で > |しょうか。 > > ブロックでbreakするとその値が返るのは仕様です。 了解しました。 > > |しかしながら、これですと > | > |$ ruby -ve 'a=Array.new(3) {|i| break 3 if i==2; i*i}; puts > a.class.inspect' > |ruby 1.8.6 (2008-08-11 patchlevel 287) [universal-darwin9.0] > |Fixnum > |$ ruby19 -ve 'a=Array.new(3) {|i| break 3 if i==2; i*i}; puts > a.class.inspect' > |ruby 1.9.2dev (2009-06-03 trunk 23623) [i386-darwin9.7.0] > |Fixnum > | > |という具合になって、よろしくないと思います。 > | > |(何がこのブロックでやりたいのかよく解んないです > |けど。) > > なにがやりたいかわからないので、なにがよろしくないのかわから > ないです。なにか「よろしくない」のであれば、もうちょっと具体 > 的にお願いします。 > Array.newなのに返ってくるのが何か予期できないのは「よろしくな い」のでは、 と考えた訳です。