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

Mis*_*hko 27 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
Run Code Online (Sandbox Code Playgroud)

小智 49

最简单的形式是:

def my_method(parameter)
  puts "parameter is a #{parameter.class}"
end
Run Code Online (Sandbox Code Playgroud)

但是如果你真的想根据类型做一些处理呢:

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
Run Code Online (Sandbox Code Playgroud)

  • @Beerlington:不:在案例x中; 当Y ....; 结束`,Ruby运行`y === x`来确定它是否应该进入`when`块.`===`只是被定义为做一些"有用的"; 例如,对于类,它是`instance_of?`; 对于范围,它是`include?`等. (12认同)

Rag*_*ghu 24

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
Run Code Online (Sandbox Code Playgroud)

应该解决你的问题


Sai*_*thi 12

if parameter.is_a? String
  puts "string"
elsif parameter.is_a? Symbol
  puts "symbol"
end
Run Code Online (Sandbox Code Playgroud)

我希望这有帮助.