加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

ruby-on-rails – 清除rails控制台中的所有变量

发布时间:2020-12-17 02:37:34 所属栏目:百科 来源:网络整理
导读:任何机构都能告诉我用什么命令来清除rails控制台中的所有变量? 例如 1.9.1 :001 permissions = {:show = true} = {:show=true} 1.9.1 :001 foo = "bar" = "bar" 我需要一个命令,可以将所有变量重置为nil而无需重启rails console本身. 任何建议将非常感谢.
任何机构都能告诉我用什么命令来清除rails控制台中的所有变量?

例如

1.9.1 :001 > permissions = {:show => true}
 => {:show=>true} 
1.9.1 :001 > foo = "bar"
 => "bar"

我需要一个命令,可以将所有变量重置为nil而无需重启rails console本身.

任何建议将非常感谢.

解决方法

local_variables.each { |e| eval("#{e} = nil") }

local_variables返回当前范围中所有局部变量的符号列表

a,b = 5,10
local_variables # => [:b,:a]

使用每个可以遍历此列表,使用eval将其值分配给nil.

您也可以使用instance_variables和global_variables执行相同的操作.例如

(local_variables + instance_variables).each { |e| eval("#{e} = nil") }

顺便说一句,如果您要多次使用它,在?/ .irbrc文件中定义这样的方法可能会有所帮助,以使所有irb会话都可以访问它(没有在rails控制台中测试它).

class Binding
  def clear
    eval %q{ local_variables.each { |e| eval("#{e} = nil") } }
  end
end

然后,在irb会话中

a = 5
binding.clear
a # => nil

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读