Rubyでif内の変数のスコープがわからなくなったので調べてみました。
環境
結論
- if内で宣言した変数にifの外からでもアクセスできる。(if内の変数はif関係なく変数が宣言されている。)
- Rubyではif内で変数のスコープを作らないため。
検証
if true hoge = "hogehoge" else hage = "hagehage" end
Rails c で確認
hoge => "hogehoge" hage => nil fuga NameError: undefined local variable or method `fuga' for main:Object
感想
他の言語だとifの前に変数を宣言しないといけないので違和感があります。これはこれで便利だと思います。
参考にさせていただいたサイト
https://doruby.jp/users/yokian/entries/【Ruby】変数やクラス定義などのスコープ