如何测试变量是否定义?

时间:2013-10-18 12:47:31

标签: ruby-on-rails ruby

以下是我想要做的伪代码:

if @current_user is defined then puts @current_user.name

3 个答案:

答案 0 :(得分:4)

然后使用运算符defined?

x = 10
defined? x # => "local-variable"
defined? y # => nil
@x = 10
defined? @x # => "instance-variable"
!!defined? x # => true
!!defined? y # => false

编写如下代码:

puts @current_user.name if !!defined?(@current_user)

答案 1 :(得分:2)

puts @current_user.name if instance_variable_defined?(:@current_user)

答案 2 :(得分:2)

确实需要知道变量是否已定义,或者是否足以知道它是否包含有效的User对象?

实例变量永远不会引发NameError,即使它们未定义。他们只评估nil,所以你可以检查一下:

puts @current_user.name unless @current_user.nil?

由于您的问题被标记为,我会假设您已加载ActiveSupport,因此您也可以使用Object#try扩展方法:

puts @current_user.try(:name)
相关问题