Когда я делаю что-то подобное в рельсах:
irb(main):060:0> users = User.where(name: "Joe")
Консоль оценит users
и распечатает его (возможно, с inspect
или to_s
, я не уверен на 100%). Это приводит к сотням строк вывода, которые мне не нужны.
Я знаю, что могу сделать что-то подобное, чтобы предотвратить вывод одной конкретной строки:
irb(main):060:0> users = User.where(name: "Joe"); nil
Поскольку nil
будет оцениваться и распечатываться вместо users
.
Я также мог бы отключить все оценки с помощью:
irb(main):060:0> conf.echo = false
Первое решение раздражает, потому что вы должны помнить, чтобы добавить это в каждую строку, которую вы хотите подавить вывод. И второе раздражает, потому что иногда вы хотите получить результат. Много раз вы просто хотите ввести имя переменной, чтобы она была напечатана.
У Python, похоже, нет этой проблемы. Если я наберу a = {1: 2}
, оболочка python не оценивает a
, она просто снова показывает приглашение. Но если я наберу {1: 2}
или просто a
, он выведет значение.
Похоже, консоль python проверяет, есть ли левая сторона оцениваемого оператора, чтобы решить, печатать результат или нет.
Вопрос:
Можно ли что-то подобное сделать в консоли ruby? Таким образом, операторы типа a = {1 => 2}
не оцениваются, а операторы типа a
и {1 => 2}
являются?
Обновление:
Я отправил этот запрос на слияние в репозиторий IRB, возможно, он будет принят, и тогда будет способом: https://github.com/ruby/irb/pull/12.