私はこのラムダを持っています:
echo_word = lambda do |words|
puts words
many_words = /\w\s(.+)/
2.times do
sleep 1
match = many_words.match(words)
puts match[1] if match
end
sleep 1
end
私はそれをeach
ブロックとして渡し、将来的にはさらに多くの各ブロックを渡したいと思っています。
def is_there_an_echo_in_here *args
args.each &echo_word # throws a name error
end
is_there_an_echo_in_here 'hello out there', 'fun times'
しかし、このラムダ メソッドで my_funky_lambda.rb を実行すると、NameError が発生します。このラムダのスコープがどうなっているのかわかりませんが、からアクセスできないようですis_there_an_echo_in_here
。
echo_word
定数ECHO_WORD
にしてそのように使用すると、適切にスコープされて使用されますが、より簡単な解決策が必要です。
このシナリオでは、echo_word
内部からラムバにアクセスする最良の方法is_there_an_echo_in_here
は何ですか?たとえば、モジュールにラップする、グローバル スコープにアクセスする、その他の方法は?