Передача Ruby ссылкой или значением?

Мне всегда нравился этот. Добавьте это к своему/etc/inputrc или ~/.inputrc

" \e [A": history-search-backward "\e [B": history-search-forward

, Когда Вы тип ls <up-arrow> это будет заменено последней командой, запускающейся с "ls" или независимо от того, что Вы вставляете.

244
задан isomorphismes 5 June 2014 в 20:18
поделиться

1 ответ

В традиционной терминологии Ruby строго передает значение . Но на самом деле вы спрашиваете не об этом.

Ruby не имеет понятия о чистом, не ссылочном значении, поэтому вы, конечно, не можете передать его методу. Переменные всегда являются ссылками на объекты. Чтобы получить объект, который не изменится из-под вас, вам нужно дублировать или клонировать объект, который вы передали, тем самым давая объект, на который больше никто не ссылается. (Но даже это не является пуленепробиваемым - оба стандартных метода клонирования выполняют неглубокую копию, поэтому переменные экземпляра клона по-прежнему указывают на те же объекты, что и оригиналы. Если объекты, на которые ссылается ivars, изменятся, это приведет к по-прежнему отображается в копии, поскольку ссылается на те же объекты.)

237
ответ дан 23 November 2019 в 03:07
поделиться
Другие вопросы по тегам:

Похожие вопросы: