【发布时间】:2010-12-12 13:59:50
【问题描述】:
def my_method(parameter)
if <what should be here?>
puts "parameter is a string"
elsif <and here?>
puts "parameter is a symbol"
end
end
【问题讨论】:
标签: 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
【问题讨论】:
标签: ruby
最简单的形式是:
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
【讨论】:
case parameter.class吗?
case x; when y ....; end 中,Ruby 运行y === x 以确定它是否应该进入when 块。 === 只是被定义为做一些“有用的”;例如,对于类,它是instance_of?;对于范围,它是 include? 等。
case parameter.class 问题。
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
应该能解决你的问题
【讨论】:
if parameter.is_a? String
puts "string"
elsif parameter.is_a? Symbol
puts "symbol"
end
我希望这会有所帮助。
【讨论】:
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
【讨论】:
if parameter.respond_to? id2name
p "Symbol"
else
p "not a symbol"
这也可以,但不是一个优雅的解决方案。
【讨论】: