Вероятно, в приведенном выше коде есть две вещи, которые вводят вас в заблуждение, которые, если прояснить, помогут понять это.
Во-первых, @verbose и @key - это переменные экземпляра, которые программист C ++ может назвать «переменными-членами». «If @verbose», следующее за оператором put, буквально означает, что они делают только тогда, когда @verbose имеет значение true. @verbose никогда не нужно объявлять как bool - вы просто начинаете его использовать. Если он никогда не инициализируется, это «ноль», что оценивается как ложное.
Во-вторых, части do / end являются кодовыми блоками. Многие методы Ruby принимают блок кода и выполняют его с переменной, объявленной в этих символах канала. Примером может быть «array.each do | s | put s; end», который может выглядеть как «для (int i = 0; i