【问题标题】:Why I'm getting void value expression although I have assigned value为什么我得到了 void value 表达式,尽管我已经分配了值
【发布时间】:2016-08-05 18:16:12
【问题描述】:

我是红宝石新手。我有以下代码块:

a = 10

while a < 20 do
 puts "True"
a++

next unless a == 12
puts "This is not 12"
end


$end

但是,我得到了 a ==12 的 void 值表达式。我一开始就给它分配了 10,所以我不明白为什么我会得到 void 值。

【问题讨论】:

  • ++ 运算符在 Ruby 中不存在
  • $end 如果 aa 被替换为 a += 1 会引发异常

标签: ruby


【解决方案1】:

a++ 替换为a += 1 应该工作。

Ruby 没有++ 运算符。 No increment operator (++) in Ruby?

【讨论】:

    【解决方案2】:

    假设

    a = 2
    

    以下都是等价的,返回5

    a++ 3
    a + +3
    a + +
    3
    a++
    
    3
    

    因此,

    a++
    
    next unless a == 12
    

    一样
    a + +next unless a == 12
    

    这会生成一个"void value expression" 异常,因为next unless a == 12 没有返回值(要发送到方法:+)。

    当然,解决方法是将a++ 替换为

    a = a + 1
    

    或其缩写形式

    a += 1
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2021-11-05
      • 1970-01-01
      • 2019-05-04
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-11-18
      • 2015-09-14
      相关资源
      最近更新 更多