Closed kazuminn closed 9 years ago
変数の違いはスコープによって区別されますね。
基本的には
#include <stdio.h>
int main(int argc, char const* argv[]) {
int a = 100;
printf("%d\n", a); // 100
{
int a = 10;
printf("%d\n", a); // 10
}
return 0;
}
の話と同じです。a って変数があってもスコープが違えば値は違う。
特にこのソースの場合は区別されるのは @jeje
かな。
この場合は @ が付いてるのでクラスごとのインスタンス変数なんだけれど、スコープがインスタンスごとに違う、と思えば良いかな。
名前は同じなんだけれどスコープが違うから違うものとして認識される。
それが
違いは何によって認識され、
への解答かな。
あと、
piyo変数はどこに格納されているのですか?
への解答はしづらいかな。「どこ」ってのは何だろう。 ひどく大ざっぱに言えばもちろんメモリに確保される。 具体的にどう確保されるかは ruby の変数がどう確保されるかみたいな話で、それは実装にによるかなー。 特にこの「piyo」だと、有効なスコープは initialize の中だけなので、 method 内でのみ有効な変数としてメモリに割り当てられると思う。
なるほど。
良くわかりました。
ありがとうございます。
例えば、
ってすると hugaとpuniの変数piyoがありますよね。 これは、指し示すオブジェクトが異なる違うやつですよね。 hugaのpiyo変数は3.object_id、puniのpiyo変数は4.obuject_idを指し示す(持ってる)と思うのですが.
違いは何によって認識され、 piyo変数はどこに格納されているのですか?