Мне всегда нравился этот. Добавьте это к своему/etc/inputrc или ~/.inputrc
" \e [A": history-search-backward "\e [B": history-search-forward
, Когда Вы тип ls <up-arrow>
это будет заменено последней командой, запускающейся с "ls" или независимо от того, что Вы вставляете.
В традиционной терминологии Ruby строго передает значение . Но на самом деле вы спрашиваете не об этом.
Ruby не имеет понятия о чистом, не ссылочном значении, поэтому вы, конечно, не можете передать его методу. Переменные всегда являются ссылками на объекты. Чтобы получить объект, который не изменится из-под вас, вам нужно дублировать или клонировать объект, который вы передали, тем самым давая объект, на который больше никто не ссылается. (Но даже это не является пуленепробиваемым - оба стандартных метода клонирования выполняют неглубокую копию, поэтому переменные экземпляра клона по-прежнему указывают на те же объекты, что и оригиналы. Если объекты, на которые ссылается ivars, изменятся, это приведет к по-прежнему отображается в копии, поскольку ссылается на те же объекты.)