Как проверить в Ruby, является ли параметр метода символом? - PullRequest
26 голосов
/ 12 декабря 2010
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 ]

47 голосов
/ 12 декабря 2010

Простейшей формой будет:

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
23 голосов
/ 12 декабря 2010
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

должен решить вашу проблему

12 голосов
/ 12 декабря 2010
if parameter.is_a? String
  puts "string"
elsif parameter.is_a? Symbol
  puts "symbol"
end

Надеюсь, это поможет.

2 голосов
/ 12 декабря 2010
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
0 голосов
/ 04 февраля 2013
if parameter.respond_to? id2name
      p "Symbol"
else
     p "not a symbol"

Это тоже будет работать, но не элегантное решение.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...