Как проверить в Ruby, если параметр метода является символом?

145
2

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

спросил(а) 2010-12-12T16:59:00+03:00 8 лет, 12 месяцев назад
5
Решение
213

Простейшая форма:


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

ответил(а) 2010-12-12T17:15:00+03:00 8 лет, 12 месяцев назад
Еще 4 ответа
143

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

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

ответил(а) 2010-12-12T17:04:00+03:00 8 лет, 12 месяцев назад
110

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

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

ответил(а) 2010-12-12T17:05:00+03:00 8 лет, 12 месяцев назад
48

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

ответил(а) 2010-12-12T17:05:00+03:00 8 лет, 12 месяцев назад
-3

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

Это также будет работать, но не изящное решение.

ответил(а) 2013-02-04T21:10:00+04:00 6 лет, 10 месяцев назад
Ваш ответ
Введите минимум 50 символов
Чтобы , пожалуйста,
Выберите тему жалобы:

Другая проблема