【发布时间】:2019-03-12 18:25:24
【问题描述】:
当我在 Rails 中做这样的事情时:
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 shell 不会评估a,它只是再次显示提示。但如果我输入{1: 2} 或只是a,它会打印出值。
似乎 python 的控制台检查是否存在正在评估的语句的左侧以决定是否打印结果。
问题:
这样的事情可以在 ruby 的控制台中完成吗?所以像a = {1 => 2} 这样的语句不会被评估,但是像a 和{1 => 2} 这样的语句是?
更新:
我将此合并请求推送到 irb 存储库,也许它会被接受,然后 会有办法:https://github.com/ruby/irb/pull/12。
【问题讨论】:
-
Python 的行为是这样的,因为赋值是一个 statement(即没有值)。在 ruby 中,赋值是一个表达式,包含它所需要的一切。
-
@SergioTulentsev 是的,我明白你在说什么。此外,如果 python 表达式返回
None控制台不会打印任何内容。如果表达式是赋值,我只是有一种方法可以防止 irb 打印表达式的输出
标签: ruby-on-rails ruby irb