【问题标题】:Strange behavior with '_' (underscore) in RubyRuby 中带有“_”(下划线)的奇怪行为
【发布时间】:2017-01-04 19:57:12
【问题描述】:

只是好奇。

如果您打开 IRB 并输入 _,您将得到 nil 作为响应:

irb(main):001:0> _
=> nil

你可以修改它的值:

irb(main):002:0> _ = 'some value'
irb(main):003:0> _
=> "some value"

但是如果你用_创建一个新变量,它的值会被修改:

irb(main):004:0> foo_bar = 'other value'
irb(main):005:0> _
=> "other value"

为什么?这是设计决定吗?

【问题讨论】:

  • 这实际上是一个方便的功能。如果要保存上一次操作的结果:a = _。我经常使用irb 作为一个方便的计算器,所以你可以很容易地链接东西:例如_ / 1e6
  • 下划线的一些更有趣的含义呈现在Here,例如视觉分隔符(1_000_000)或被忽略的参数object.each {|_, v| ...}

标签: ruby irb


【解决方案1】:

irb 使用_ 引用上次计算表达式的值。所以你会看到_ 改变了,即使你没有在上一行中使用它:)

【解决方案2】:

在irb中,_返回上一次操作的结果。因此,在打开一个新的 irb 会话时,_ 将等于 nil,因为之前没有任何操作

2.0.0p353 :001 > 4
 => 4 
2.0.0p353 :002 > 3 + _
 => 7 

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2011-08-20
    • 1970-01-01
    • 2012-04-26
    • 2011-08-24
    • 2013-02-15
    • 1970-01-01
    • 2016-01-05
    • 2014-03-25
    相关资源
    最近更新 更多