如果变量未定义则返回

时间:2016-07-02 13:02:12

标签: ruby

如何在函数内部创建条件来测试传递给函数的变量是否已定义,如果不是,则执行命令,否则执行函数?

3 个答案:

答案 0 :(得分:2)

像这样的东西

def your_method(parameter)
  if parameter
    # do something
  else
    puts "parameter has no value"
  end
end

答案 1 :(得分:1)

你可以这样做:

def foo bar
  return puts "..." unless defined?(bar) == "local-variable"
  # Otherwise, continue with the method
  ...
end

但是,始终定义分配给给定参数的变量bar。永远不会满足unless ...条件。所以你的问题没有实际意义。

答案 2 :(得分:0)

(如果您正在使用Rails)请使用#try,请参阅:https://github.com/rails/rails/blob/dd7d5b7c800b4f6d32747913fc7c8d00ce94f03a/activesupport/lib/active_support/core_ext/object/try.rb#L54

def my_function(var)

  return "string here" unless try(var)

  # --or--
  #
  # execute_whatevs unless @object.try(var)
  #
  # execute_whatevs(var) unless try(var) 
  #
  # execute_something unless try(var)
  #
  # var.try(:execute_whatevs)
end