【问题标题】:How can I avoid the console output when assigning a value to a variable in Ruby在Ruby中为变量赋值时如何避免控制台输出
【发布时间】:2013-12-22 17:17:50
【问题描述】:

是否可以在赋值时避免这种影响:

irb(main):584:0>a = true
=>true
irb(main):584:0>

我有一个有很多分配的代码,当我尝试测试它时,由于所有这些返回值,我看不到结果:

true
false
true
false
true
true
..

【问题讨论】:

  • 将此代码包装在 proc 对象中?

标签: ruby irb


【解决方案1】:

您可以启动irb 或附加--noecho 选项的控制台。

$ irb --noecho
2.0.0p353 :001 > true
2.0.0p353 :002 > 

否则,如果控制台是由另一个进程启动的,只需设置conf.echo = false

$ irb 
2.0.0p353 :001 > true
 => true 
2.0.0p353 :002 > conf.echo = false
2.0.0p353 :004 > true
2.0.0p353 :005 > 

【讨论】:

  • 我使用 conf.echo 对其进行了额外配置,但它不断返回这些值。我有一个模块,里面有很少的类和模块,在模型的最后,我创建了嵌套类的实例并生成了这些值。不过还是谢谢。
  • 输入(或打印出)conf 并确保打印出conf.echo=false。它还需要是您启动 irb 时的第一条语句。
【解决方案2】:

在命令后面加一个分号,它不打印,对 pry 和 irb 都有效

[1] pry(main)> a = true
=> true
[2] pry(main)> a = true;
[3] pry(main)>

IRB

2.0.0p247 :001 > a = true
 => true
2.0.0p247 :002 > a = true;
2.0.0p247 :003 >

【讨论】:

  • IRB 版本并不像您认为的那样。试试这个,例如:puts "hi";。不过,您对 Pry 行为的理解是正确的。
【解决方案3】:

上面的答案都不适用于我的设置,所以我最终只是做了一个小帮手,并宣布事情超出了范围。又快又脏,但可以完成工作:

def quiet(&block)
  yield
  nil
end

foo = nil
quiet { foo = 'long' * 1000 }

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-04-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-10-31
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多