-5

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

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这样的符号时,它显示参数不是空的

我正在搜索,我在这里找到了一个类似的问题,但只有一个答案让我没有清楚地理解原因。任何明确的答案都会有所帮助。谢谢

** 更新 **


是我最初的问题,我打开这个问题是因为我没有一个好的答案

4

1 回答 1

2

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

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

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

于 2013-07-25T12:06:19.573 回答