【发布时间】:2021-01-19 13:29:24
【问题描述】:
只是想知道是否类似:
# frozen_string_literal: true
存在但对于数组和哈希?
目标是不必.freeze 同一全局文件中的每一个。
【问题讨论】:
-
另外值得注意的是,如果您使用代码 linter,它可能支持 自动更正 功能来解决此类问题。例如,
rubocophas a rule for this,因此自动更正文件,并自动使用freeze每个常量。
只是想知道是否类似:
# frozen_string_literal: true
存在但对于数组和哈希?
目标是不必.freeze 同一全局文件中的每一个。
【问题讨论】:
rubocop has a rule for this,因此自动更正文件,并自动使用 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"
【讨论】:
找到了一种方法来处理它,而无需使用仅使用 vscode 和 rubocop 的其他 gem:
.vscode/settings.json
{
"editor.formatOnSave": true,
"editor.formatOnSaveTimeout": 5000,
"ruby.format": "rubocop"
}
感谢 Tom Lord 的提示。
【讨论】: