Я пытаюсь понять очень тонкую реализацию Ruby с бай-ином ... или действительно по-ссылке-по-значению. Это имеет смысл при передаче аргументов в метод, однако, когда я наткнулся на следующее, я немного запутался:Как увидеть ссылки на объекты в Ruby
person = {name: "Michael"}
# => {:name => "Michael"}
person.object_id
# => 70366412279760
full_name = person[:name]
# => "Michael"
full_name.object_id
# => 70366412279780
full_name << " Jordan"
# => "Michael Jordan"
person
# => {:name => "Michael Jordan"}
Как это возможно? Как full_name содержит ссылку на объект person? Есть ли метод в Ruby, где вы можете «видеть» ссылки переменной?
Я принял само собой разумеющийся пишущий код, как в прошлом, но теперь, когда я пытаюсь понять, что происходит, я в тупике.
Это все о 'binding'. Взгляните сюда для начинающих - http://ruby-doc.org/core-2.2.0/Binding.html – Jon