如何在Ruby

时间:2016-06-01 19:29:41

标签: ruby

我有一个包含字符串和符号

的数组

在我的函数中,我得到一个字符串来检查数组是否包含该字符串。

array = ["day",:night]

def check(name)
    if array.include? name or array.include? name.to_sym
         return true
    else
         return false
   end
end

如果输入为“day”,则返回true。如果输入为“night”,则返回false。我希望在“夜晚”的情况下返回true,因为我将其转换为检查是否存在具有相同名称的符号。

如何使此功能正常工作,以便将符号(:night)与字符串("night")进行比较并返回true

2 个答案:

答案 0 :(得分:5)

def check(name, array)
  array.map(&:to_s).include?(name.to_s)
end

array = ["day",:night]

check("day", array)   #=> true
check(:day, array)    #=> true
check("night", array) #=> true
check(:night, array)  #=> true
check("cat", array)   #=> false

答案 1 :(得分:1)

将数组放入方法定义中,如下所示:

def check(name)
  array = ["day",:night]
  array.include? name.to_s or array.include? name.to_sym  
end

p check("day") #=> true
p check(:day) #=> true
p check("night") #=> true
p check("hyperspace") #=> false