将符号传递给方法的结果

时间:2013-07-25 11:54:45

标签: ruby-on-rails ruby

我有一个带有一个参数的方法声明:

def my_method(argum)
   if argum.empty?
      puts "argument is empty"
   else 
      puts "argument is not empty"
   end
end

当我调用此方法时,我将符号传递给它,如:my_method(:aleatoir_symbol)它显示参数不为空,当我传递文字符号时就像这样my_method(:"")它显示参数为空

我也用irb测试,这就是结果:

:a_symbol.empty?
 => false
 :"".empty?
 => true

我的问题是为什么当我传递像:any_symbol 这样的符号时,它显示参数不为空 ??

我正在搜索,我发现了一个类似的问题here,但只有一个答案给了我一个清楚的理解原因。任何明确的答案都会有所帮助。感谢的

**更新**


here是我原来的问题,我打开这个问题,因为我没有一个好的答案

1 个答案:

答案 0 :(得分:2)

Symbol#empty基本上定义为self.to_s.empty?self为符号)。

所以回答你的问题为什么 :"".empty?true:这是因为:"".to_s(空字符串)为空。

要评论您的评论::any_symbol.empty?false,因为:any_symbol.to_s.empty?false。这是同一件事。也许empty?不是您正在寻找的方法。也许我只是没有得到你的要求。