Ruby 如果element.to_sym为空,则从数组中删除元素
我有一个API类,它生成如下命令:Ruby 如果element.to_sym为空,则从数组中删除元素,ruby,ruby-on-rails-3,Ruby,Ruby On Rails 3,我有一个API类,它生成如下命令: class APIDocument ... def order @order = [] @document.template.order.split('_').each do |o| @order << o unless o.to_sym == '' end @order end ... end 任何帮助都会很好 o.to_sym在其中一种情况下等于' 你确定吗?我假设o是一个字符串,在
class APIDocument
...
def order
@order = []
@document.template.order.split('_').each do |o|
@order << o unless o.to_sym == ''
end
@order
end
...
end
任何帮助都会很好
o.to_sym
在其中一种情况下等于'
你确定吗?我假设o
是一个字符串
,在这种情况下,to_sym
将始终产生一个符号
。这意味着o.to_sym
永远不会等于空的字符串('
)
也许您正在寻找以下线索:
@orders = @document.template.order.split('_').delete_if { |s| s.empty? }
@订单字符串
:''.class=>Symbol
- 在ruby中,字符串不同于符号。字符串是可变变量,但符号是不可变变量。符号对象与代码中的所有上下文相同李>
啊,感谢@August,这项工作:
def order
@order = @document.template.order.split('_').delete_if { |o| self.send(o).blank? }
end
是的,没错。我喜欢你的解决方案,但我仍然得到返回的o
,即使它等于'
@emmo.to_sym
可能永远不会等于'
。可能它将等于:''
(空符号)?因此s.to_sym==:''
仍然返回空字符串。如何测试它?s.to_sym==:”
只能返回true
或false
。八月,当谈到Ruby或任何其他编程语言所使用的规则时,从您的词汇表中可以看到类似“可能”、“可能”和“不可能”的词。“不能”这个词在这里起作用。我已经用一个有效的解决方案回答了我自己的问题,谢谢你,@August。你能写下o.to_-sym='
,当你的意思是=
,然后看o_-to-sym
?
@order << o unless o.to_sym == :''
''.class => String
:''.class => Symbol
def order
@order = @document.template.order.split('_').delete_if { |o| self.send(o).blank? }
end