почему number
вместо @number
Поскольку вы определили читатель / получатель, вы можете использовать его. Сегодня метод number
поддерживается переменной экземпляра, завтра он вычисляется (или лениво создается и т. Д.). Используя метод, а не его внутренние компоненты, вы защищаете себя от каскадных изменений. Это называется «инкапсуляция». Но вы могли бы использовать переменную, просто это не очень хорошая практика.
вызов (self% i) не требует пробела между self и%, я полагаю, это как-то связано с приоритетом оператора?
Нет. Ничего общего с приоритетом. В незаполненной форме не было никакой двусмысленности, и ruby смог успешно ее проанализировать, поэтому он разрешен.