Подтвердить что ты не робот

Когда можно использовать метод замены строки?

Я возился и решил посмотреть, вернет ли "abcde".replace("a", "e") "ebcde". Оказывается, это не то, как работает замена (я допускаю, что я догадался по имени метода, если один из них существует для этих целей).

Вместо того, чтобы прочитать документы, я обнаружил, что у него странное поведение.

string = "abcde"
string.replace("e") #=> "e"

string теперь "e".

В чем смысл метода замены? Для меня это выглядит как метод сеттера, но вы можете так же легко сделать string = "e".

Существуют ли конкретные варианты использования для замены?

4b9b3361

Ответ 1

replace изменяет содержимое текущего экземпляра, а не назначает новый экземпляр. См. Различия:

a = 'old_string'
b = a
b.replace 'new_string'
a
# => "new_string"

против

a = 'old_string'
b = a
b = 'new_string'
a
# => "old_string"

Ответ 2

Как и ответ Ури:

a = "foo"
# => "foo"

a.object_id
# => 70267150553520

a.replace("bar")
# => "bar"

a.object_id
# => 70267150553520

Ответ 3

Его можно использовать для изменения значения параметра, переданного методу:

def change(string)
  string.replace('bar')
end

s = 'foo'
change(s)

s   #=> 'bar'