Rubyのスコープでハマったこと
なにこれ
Ruby言語でtwitterのスクリプトを書いている時にハマったこと。それの、解決策をlogっとく。 初心者レベルのことを書きます。
先にざっと解決策を述べると
define_method
を使えば良い。
たとえば、
hoge = "hoge" def piyo(huga,nanntyara) 何か処理 end piyo("huga","nanntyara")
とか書いて、hogeをpiyoの引数として追加したい
しかし、defに入ると完璧にscopeを離れる。
その解決策として「piyoの引数を増やす」ってのを思いついた。
でも、ダサいと思ったので、defのスコープを外したい。
前に勉強したdefine_methodを思いついたのだが、あんまり覚えていなくて
hoge = "hoge" define_method piyo(huga,nanntyara) 何か処理 end piyo("huga","nanntyara")
と、意味のわからないことを書いてしまった。
しっかり調べると
hoge = "hoge" define_method(:piyo) do |huga,nanntyara| 何か処理 end piyo("huga","nanntyara")
と書くようだ define_methodで問題が解決できた。
やっぱり学んでも、使わなければ忘れちゃいますね。
そうゆえば、define_methodを使っちゃうと
スコープが壊れちゃうので、あまり使っちゃいけなかったはず?