こんにちは。
はい、Rubyの変数スコープは基本的に「どこで宣言されたか」によって決まります。
特にブロック内で初めて登場した変数は、そのブロックの中だけで有効となり、外側から参照することはできません。
例えば[1,2,3].each{|x| y = x*2 }のように書いた場合、yはブロック内でのみ存在し、ブロックの外では未定義となります。
一方で、ブロックの外で既に定義されている変数はブロック内でも利用でき、値を変更することも可能です。
つまり「ブロック内で宣言したものはブロック限定」「外で宣言したものはブロックでも使える」というのがRubyの基本ルールです。
この仕組みにより、意図しない変数の衝突を防ぎ、コードの可読性や安全性を高めています。
スコープを理解することは、Rubyでのプログラミングにおいて非常に重要であり、特にイテレーションやクロージャを扱う際に役立ちます。