###前提・実現したいこと
下記のようなコードにおいて、
数字が来た時はOKだが、文字列が来るとエラー。
逆に文字列が来る時はOKだが、数字がくるとエラーになる。
そこでevalの改善をしたい。
つまり、数字、文字列どちらがきてもエラーにならないeval
を書きたい。
###実現したい結果
v = "red" p eval "#{v}" => "red" v = 1 p eval "#{v}" => 1
試した結果
v = "red" p eval "#{v}" => undefined local variable or method `red' for main:Object (NameError)
v = 1 p eval "#{v}" => 1
v = "red" p eval ":#{v}.to_s" => "red"
v = 1 p eval ":#{v}.to_s" => syntax error, unexpected tINTEGER, expecting tSTRING_CONTENT or tSTRING_DBEG or tSTRING_DVAR or tSTRING_END (SyntaxError)
v = 1 if v.is_a?(String) p eval ":#{v}.to_s" => 1 else p eval "#{v}" end
v = "a" if v.is_a?(String) p eval ":#{v}.to_s" else p eval "#{v}" => "a" end
v = "12" if v.is_a?(String) p eval ":#{v}.to_s" => syntax error, unexpected tINTEGER, expecting tSTRING_CONTENT or tSTRING_DBEG or tSTRING_DVAR or tSTRING_END (SyntaxError) else p eval "#{v}" end
###補足情報(言語/FW/ツール等のバージョンなど)
ruby 2.4.0
パズルと言うことでしょうか?

回答4件
あなたの回答
tips
プレビュー