默认情况下冻结数组和散列?
Freeze arrays and hashes by default?
只是想知道是否有类似的东西:
# frozen_string_literal: true
存在,但对于数组和哈希?
目标是不必 .freeze
同一个全局文件中的每一个。
我没有找到猴子补丁默认 ruby 类 的任何库,例如 Array
或 Hash
。但我发现了一个有趣的 gem immutable-ruby 可能符合您的需要
简单示例
require "immutable/hash"
person = Immutable::Hash[name: "Simon", gender: :male]
# => Immutable::Hash[:name => "Simon", :gender => :male]
你不能只修改它的值,因为它是不可变的。您可以对该哈希执行一些操作,但新副本将返回给您
friend = person.put(:name, "James") # => Immutable::Hash[:name => "James", :gender => :male]
person # => Immutable::Hash[:name => "Simon", :gender => :male]
friend[:name] # => "James"
person[:name] # => "Simon"
找到了一种不使用另一个 gem 仅使用 vscode 和 rubocop 来处理它的方法:
- 在 vscode
上安装 rubocop 扩展
- 打开你的
.vscode/settings.json
- 附加这些规则:
{
"editor.formatOnSave": true,
"editor.formatOnSaveTimeout": 5000,
"ruby.format": "rubocop"
}
- 保存
- 享受
感谢 Tom Lord 的提示。
只是想知道是否有类似的东西:
# frozen_string_literal: true
存在,但对于数组和哈希?
目标是不必 .freeze
同一个全局文件中的每一个。
我没有找到猴子补丁默认 ruby 类 的任何库,例如 Array
或 Hash
。但我发现了一个有趣的 gem immutable-ruby 可能符合您的需要
简单示例
require "immutable/hash"
person = Immutable::Hash[name: "Simon", gender: :male]
# => Immutable::Hash[:name => "Simon", :gender => :male]
你不能只修改它的值,因为它是不可变的。您可以对该哈希执行一些操作,但新副本将返回给您
friend = person.put(:name, "James") # => Immutable::Hash[:name => "James", :gender => :male]
person # => Immutable::Hash[:name => "Simon", :gender => :male]
friend[:name] # => "James"
person[:name] # => "Simon"
找到了一种不使用另一个 gem 仅使用 vscode 和 rubocop 来处理它的方法:
- 在 vscode 上安装 rubocop 扩展
- 打开你的
.vscode/settings.json
- 附加这些规则:
{
"editor.formatOnSave": true,
"editor.formatOnSaveTimeout": 5000,
"ruby.format": "rubocop"
}
- 保存
- 享受
感谢 Tom Lord 的提示。