Как предотвратить объединение массивов от изменения значений задействованных массивов?
Я хочу создать некоторые константы, которые являются значениями массива, но, кажется, возникают проблемы, когда я пытаюсь их объединить.
MALE_TOKENS = %w(m male)
#=> ["m", "male"]
FEMALE_TOKENS = %w(f w female)
#=> ["f", "w", "female"]
GENDER_TOKENS = MALE_TOKENS.concat FEMALE_TOKENS
#=> ["m", "male", "f", "w", "female"]
MALE_TOKENS
#=> ["m", "male", "f", "w", "female"]
Обратите внимание, что после concat
, MALE_TOKENS
теперь содержит FEMALE_TOKENS
, Я не хочу этого
Как мне держать вещи отдельно?
1 ответ
Решение
Массив #concat
мутирует получателя:
Добавляет элементы +other_ary+s к
self
,
Чтобы не изменить MALE_TOKENS
значение, которое вы можете использовать Array #+
:
GENDER_TOKENS = MALE_TOKENS + FEMALE_TOKENS
#=> ["m", "male", "f", "w", "female"]
MALE_TOKENS
#=> ["m", "male"]
FEMALE_TOKENS
#=> ["f", "w", "female"]