我可以执行以下操作吗?如果是这样的话?
我有一个符号数组
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语句中得到了真实的结果?
答案 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}