在Ruby中,我如何检查符号是否在符号数组中?

时间:2017-09-11 18:17:01

标签: ruby

我可以执行以下操作吗?如果是这样的话?

我有一个符号数组

symbols = %w{:sym1 :sym2 :sym3} # is this correct implementation?

# I'm putting this in a function for this illustration
def check_symbol(symbol)
  symbols.include?(symbol)
end

puts check_symbol(:sym1) # expect true, but I get false
puts check_symbol(:sym44) # expect false of course

我怎么能这样做?我在第一个put语句中得到了真实的结果?

2 个答案:

答案 0 :(得分:4)

您可以将符号数组指定为.is_a?(Symbol)

要检查您的符号是否在符号数组中,您可以全部使用吗?检查他们是否所有人都回复array_of_symbols = %i[sym1 sym2 sym3] p array_of_symbols.all? { |e| e.is_a?(Symbol) } && array_of_symbols.include?(:sym1) # true ,然后如果数组包含您的特定数组,例如:

NUMBER(14,0)

答案 1 :(得分:2)

你没有一个符号数组,你所拥有的是一个看起来像符号的字符串数组。 正确的定义是

symbols = %i{sym1 sym2 sym3}