[#49241] dRuby IPv6 — masa <masap.hat@...>
スイスの畠山です。
6 messages
2013/03/01
[#49247] Ruby 1.9系 on Windows8 にて Kernel#gets でマルチバイト文字入力の不具合 — Takeshi Iogawa <alpha@246.ne.jp>
いおがわです。こんにちは。
4 messages
2013/03/02
[#49254] forループ内の変数のスコープに関して — 村上 友洋 <tomohiroz@...>
初めまして。
5 messages
2013/03/06
[#49300] 例外を飛ばすThread内ではpassをしないとそのThreadはjoinできないことがある? — Isamu Mogi <dyob@...>
こんにちは。茂木と申します。
6 messages
2013/03/27
[#49301] Re: 例外を飛ばすThread内ではpassをしないとそのThreadはjoinできないことがある?
— KOSAKI Motohiro <kosaki.motohiro@...>
2013/03/27
(3/27/13 8:51 AM), Isamu Mogi wrote:
[ruby-list:49256] Re: forループ内の変数のスコープに関して
From:
村上 友洋 <tomohiroz@...>
Date:
2013-03-06 06:49:22 UTC
List:
ruby-list #49256
小柳さん。ありがとうございます。
村上です。
ruby 1.9.3p392では上手くいきました。
ただruby 1.8.7 (2012-02-08 patchlevel 358) [universal-darwin12.0]ではforループと同様の結果になってしまいました。
バージョンアップの際にこの辺が改善されたようですね。
On 2013/03/06, at 15:36, 小柳真太 <yancya@upec.jp> wrote:
> 村上さん
> こんにちは
> 小柳と申します
>
>> ループ内で使用される変数の有効範囲をループ内だけに限定させることはできないのでしょうか?
> そういう挙動を求めるとき、私なら下記の様に書きます。
> #----------------
> a=4
>
> (0..10).each do |a|
> print "a="<<a.to_s<<"\n"
> end
>
> p a
> #----------------
> do ... end や { } によるブロックをつかうと、その内側でのみ有効なブロック変数を使う事ができます。
>
> 参考 URL
> http://doc.ruby-lang.org/ja/1.9.3/doc/spec=2fcontrol.html#for
>
>
> 2013年3月6日 15:20 村上 友洋 <tomohiroz@icloud.com>:
>
>> 初めまして。
>> メーリングリストに初投稿させていただきます 村上 と申します。
>>
>> 変数のスコープに関して質問というか気になる点がありましたのでこのメールを出させていただきました。
>> 以下のコードを実行したところ
>> #----------------
>> a=4;
>>
>> for a in 0..10
>> print "a="<<a.to_s<<"\n";
>> end;
>>
>> p a;
>> #----------------
>> #実行結果
>> $/usr/local/bin/ruby -v
>> ruby 1.9.3p392 (2013-02-22 revision 39386) [x86_64-darwin12.2.1]
>> $/usr/local/bin/ruby sample.rb
>> a=0
>> a=1
>> a=2
>> ~
>> a=8
>> a=9
>> a=10
>> 10
>>
>>
>> という結果が出力されました。自分としては変数aの最後の出力値は4であることを期待していたのですが、10となってしまいました。forループ内で使用される変数の有効範囲をループ内だけに限定させることはできないのでしょうか?
>> 似たようなことをC言語で組んだところforループ内の変数の宣言の仕方によって結果が異なりました。
>> #-------------------
>> int a=4;
>> for(int a=0;a<10;a++){
>> printf("a=%d\n",a);
>> }
>>
>> printf("%d\n",a);
>> #-------------------
>> #実行結果
>> a=0
>> a=1
>> a=2
>> ~
>> a=8
>> a=9
>> 4
>>
>> #--------------------
>> int a=4;
>> for(a=0;a<10;a++){
>> printf("a=%d\n",a);
>> }
>>
>> printf("%d\n",a);
>> #---------------------
>> #実行結果
>> a=0
>> a=1
>> a=2
>> ~
>> a=8
>> a=9
>> 10
>>
>>
>
>
> --
> :-:-:-:-:-:-:-:-:-:-:-:-:-:-:-:-:-:-:-:-:-:-:-:-:-:-:-:-:
> 小柳 真太 yancya@upec.jp http://upec.jp
> :-:-:-:-:-:-:-:-:-:-:-:-:-:-:-:-:-:-:-:-:-:-:-:-:-:-:-:-: