[ruby-list:49254] forループ内の変数のスコープに関して

From: 村上 友洋 <tomohiroz@...>
Date: 2013-03-06 06:20:15 UTC
List: ruby-list #49254
初めまして。
メーリングリストに初投稿させていただきます 村上 と申します。

変数のスコープに関して質問というか気になる点がありましたのでこのメールを出させていただきました。
以下のコードを実行したところ
#----------------
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

In This Thread

Prev Next