2010-06-06 21 views

回答

3

這做工作:

%w{version patchlevel platform}.each{|v| eval "RUBY_#{v.upcase} ||= 'unknown #{v}'"} 

,但我認爲這是不透明和不愉快。我認爲你的原始版本好多了。特別是,我認爲||=與常數不是很大(因爲常量不應該是動態的),並且使用eval與常量不是標準或因此預期。在我看來,將條件賦值,常量和eval放在一起會導致混合不良。

+0

+1的解釋提高彼得的解決方案。我認爲原始版本也更好。 – Anurag 2010-06-06 07:00:11

0

我認爲你不應該改變常量的值。相反,試試這個:

puts "Ruby #{RUBY_VERSION || 'unknown version'}" # ... 

而且,使用Rails的好東西,你可以通過調用

"RUBY_#{v}".constantize 

,而不是骯髒的eval ;-)