ruby - Ruby 中是否有可变持久性?

标签 ruby arrays memory

在 Matlab 中,我记得能够声明一个数组并对其进行初始化,并且它在整个 Matlab session 期间驻留在内存中。我可以复制它、修改它并通过测试运行它。这个选项在 Ruby 中可用吗?基本上我想创建并填充一个包含 1200 万个 32 位整数的数组。然后我想运行访问该内存的代码。我不想每次调整/调试我的 ruby​​ 代码时都必须重新初始化该数组。

最佳答案

全局变量是一种方式,但我会说有点麻烦。

这意味着您希望对象持久化,因为您希望它在修改代码时可用。然后您需要初始化数据并将其保存在文件中。你有几种可能性,比如 YAML/JSON或者,以二进制但更有效的方式,Marshalling .

如果你有一个数据结构,你可以用这个将它保存在 YAML 中

require "yaml"

foo = SomeObject.new
File.open("bar.yaml", "w") do |fh|
  YAML.dump(foo, fh)
end

JSON 几乎是一样的。使用 Marshal.dump 是等效的。

然后您可以在代码中使用一个方法来读取数据。

File.open(fname) do |fh|
  foo = YAML.load(fh)
end

关于ruby - Ruby 中是否有可变持久性?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/478434/

相关文章:

Javascript - 检测对象数组中的反向对

ruby-on-rails - 如何不需要 "rails/all"?

ruby - 使用 Mechanize/Nokogiri 按类获取最接近的前一个兄弟中的文本值

c++ - R 数值 vector 列表 -> C++ 2d array with Rcpp

ruby - 哪个 Linux 发行版拥有最活跃/最新的 Ruby 支持?

c - 如何在 C 中一次修改多个元素?

java - 我可以分配多少内存?

arrays - 在 MATLAB 中预分配数组的替代方法是什么?

ruby-on-rails - 哈希和方括号的语法错误

ruby-on-rails - ruby rails : Using shovel operator to update a string attribute on a model does not make the model dirty