如果方法的参数是符号,如何检查Ruby?

时间:2010-12-12 13:59:50

标签: ruby

def my_method(parameter)
  if <what should be here?>
    puts "parameter is a string"
  elsif <and here?>
    puts "parameter is a symbol"
  end
end

5 个答案:

答案 0 :(得分:47)

最简单的形式是:

def my_method(parameter)
  puts "parameter is a #{parameter.class}"
end

但如果你真的想根据类型做一些处理,请执行以下操作:

def my_method(parameter)
  puts "parameter is a #{parameter.class}"
  case parameter
    when Symbol
      # process Symbol logic
    when String
      # process String logic
    else
      # some other class logic
   end
end

答案 1 :(得分:23)

def my_method(parameter)
  if parameter.is_a? String
    puts "parameter is a string"
  elsif parameter.is_a? Symbol
    puts "parameter is a symbol"
  end
end

应解决您的问题

答案 2 :(得分:12)

if parameter.is_a? String
  puts "string"
elsif parameter.is_a? Symbol
  puts "symbol"
end

我希望这会有所帮助。

答案 3 :(得分:2)

def my_method(parameter)
  if parameter.is_a? String
    puts "parameter is a string"
  elsif parameter.is_a? Symbol
    puts "parameter is a symbol"
  end
end

答案 4 :(得分:0)

if parameter.respond_to? id2name
      p "Symbol"
else
     p "not a symbol"

这也可以,但不是一个优雅的解决方案。