我有一个带有一个参数的方法声明:
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是我原来的问题,我打开这个问题,因为我没有一个好的答案
答案 0 :(得分:2)
Symbol#empty
基本上定义为self.to_s.empty?
(self
为符号)。
所以回答你的问题为什么 :"".empty?
是true
:这是因为:"".to_s
(空字符串)为空。
要评论您的评论::any_symbol.empty?
为false
,因为:any_symbol.to_s.empty?
为false
。这是同一件事。也许empty?
不是您正在寻找的方法。也许我只是没有得到你的要求。