#ruby #constants #freeze
#ruby #константы #заморозить
Вопрос:
Просто интересно, если что-то вроде:
# frozen_string_literal: true
существует, но для массива и хэша?
Цель состоит в том, чтобы не .freeze
использовать каждый из них в одном и том же файле globals.
Комментарии:
1. Еще стоит отметить, что если вы используете компоновщик кода, он может поддерживать функцию автоматической коррекции для устранения подобных проблем. Например,
rubocop
для этого есть правило , позволяющее автоматически корректировать файл сfreeze
каждой константой.
Ответ №1:
Я не нашел ни одной библиотеки, которая исправляла бы классы ruby по умолчанию, такие как Array
или Hash
. Но я нашел интересный неизменяемый драгоценный камень — 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"
Комментарии:
1. Это стоит рассмотреть. Я попробую, спасибо.
Ответ №2:
Найден способ справиться с этим без использования другого драгоценного камня, используя только vscode и rubocop :
- Установите расширение rubocop на vscode
- Откройте свой
.vscode/settings.json
- Добавьте эти правила :
{
"editor.formatOnSave": true,
"editor.formatOnSaveTimeout": 5000,
"ruby.format": "rubocop"
}
- Сохранить
- наслаждайтесь
Спасибо Тому Лорду за подсказку.