問題
eval内で、breakを記述したい (evalからbreakするわけではなく) のですが、
SyntaxError ((eval):2: Can't escape from eval with break):
と出てしまい、使用することができません。
具体例
具体的な用法は、下記のような形です。
「特定のタスクが完了するまでsleepする」メソッドを作る際、
「タスクが完了したら、@task_complete = trueとなり、breakする」
としたいと思っています。
ruby
1th = Thread.new do 2 3.times do |n| 3 sleep 1 4 @task_complete = true if n == 3 5 end 6end 7th.run 8 9def wait_until_1 str 10 loop do 11 eval("break if #{str}") 12 sleep 1 13 end 14end 15 16wait_until_1 '@task_complete' 17 18# > SyntaxError ((eval):2: Can't escape from eval with break):
ちなみに、evalの書き方を変えても、同じエラーがでてしまいます。
ruby
1th = Thread.new do 2 3.times do |n| 3 sleep 1 4 @task_complete = true if n == 3 5 end 6end 7th.run 8 9def wait_until_2 str 10 loop do 11 eval("if #{str} 12 break 13 else 14 sleep 1 15 end") 16 end 17end 18 19wait_until_2 '@task_complete' 20 21# > SyntaxError ((eval):2: Can't escape from eval with break):
アドバイスいただけますと幸いです。

回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2022/06/23 06:13