这是1.9 ruby中的行为:
[].to_s.empty? #=> false
{}.to_s.empty? #=> false
[].to_s #=> "[]"
{}.to_s #=> "{}"
[43,43].to_s #=> "[43, 43]"
{"fire"=>"water"}.to_s #=> "{\"fire\"=>\"water\"}"
这是2.0 ruby中的行为:
[].to_s.empty? #=> true
{}.to_s.empty? #=> true
[].to_s #=> ""
{}.to_s #=> ""
[43,43].to_s #=> "4343"
{"fire"=>"water"}.to_s #=> "firewater"
我想知道2.0中to_s
方法的行为发生了这种变化。
答案 0 :(得分:1)
在2.x中,这是[].to_s
2.1.5 :001 > [].to_s
=> "[]"
2.1.5 :002 > [43,43].to_s
=> "[43, 43]"
鉴于它与您的Ruby设置不匹配,肯定会在您的系统中更改它。
尝试启动简单明了的irb
会话。如果它像我上面所示的那样工作,那就意味着你的Ruby应用程序出了问题。
如果它不起作用,则表示Ruby设置中存在错误。
无论问题出在哪里,我都想知道你为什么依赖像
这样的代码[].to_s.empty?
我无法找到上述代码有意义的单一案例。如果要检查数组中是否存在某个项目,只需使用
[].empty?
如果要将数组视为字符串,请使用可能的合理方法进行转换,例如join
[].join("").empty?