Что такое объект перечислителя? (Создано с помощью String#gsub)

У меня есть массив атрибутов следующим образом:

attributes = ["test, 2011", "photo", "198.1 x 198.1 cm", "Photo: Manu PK Full Screen"]

Когда я делаю это,

artist = attributes[-1].gsub("Photo:")
p artist

я получаю следующий вывод в терминале

#<Enumerator: "Photo: Manu PK Full Screen":gsub("Photo:")>

Хотите знать, почему я получаю объект перечислителя в качестве вывода? Заранее спасибо.

РЕДАКТИРОВАТЬ: обратите внимание, что вместо attributes[-1].gsub("Photo:", ""), I am doing attributes[-1].gsub("Photo:") поэтому хотелось бы знать, почему объект перечислителя вернулся сюда (я ожидал сообщения об ошибке) и что происходит?

Рубин — 1.9.2

Рельсы — 3.0.7


person nkm    schedule 13.12.2011    source источник


Ответы (2)



Если не указан ни блок, ни второй аргумент, gsub возвращает перечислитель. Подробнее см. здесь.

Чтобы удалить его, вам нужен второй параметр.

attributes[-1].gsub("Photo:", "")

Or

attributes[-1].delete("Photo:")

Надеюсь это поможет!!

person andrewpthorp    schedule 13.12.2011
comment
Обратите внимание, что с #delete он удалит каждый символ в данной строке, а не слово. например "Photo of an otter".delete("Photo:") # => " f a er" - person Kris; 20.07.2018