ruby - if a = b 这行在 ruby​​ 代码中是什么意思?

标签 ruby if-statement variable-assignment

<分区>

我试图理解以下代码中的特定行:

def roman_to_integer(roman_string)
   prev = nil
   roman_string.to_s.upcase.split(//).reverse.inject(0) do
    |running_sum, digit|
     if digit_value = DIGITS[digit]
       if prev && prev > digit_value
         running_sum -= digit_value
       else
         running_sum += digit_value
       end
       prev = digit_value
     end
     running_sum
   end
 end

有人可以帮我理解 if digit_value = DIGITS[digit] 这一行的意思吗?我们是否将散列中与键“DIGIT”对应的值分配给此处的 digit_value?

最佳答案

are we assigning the value

是的,我们是。我们还检查操作的真实性。赋值运算符返回分配的值。现在,如果它是一个数字,它将是一个真实的结果并且控制将进入 if

如果DIGITS[digit] 返回nil 或false,它将被赋值给digit_value,并且它也将成为赋值操作的结果。这些值是错误的,所以我们将输入 else,如果那里有的话。但我们不这样做,所以我们只是跳过 if

关于ruby - if a = b 这行在 ruby​​ 代码中是什么意思?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39295785/

相关文章:

子程序返回中对哈希的 perl 赋值变得很奇怪

c - 在c中解析.conf文件

ruby-on-rails - 使用带有套接字激活的 puma/systemd 有什么好处?

ruby - 从 1 开始循环

windows - Windows批处理if语句,带有用户输入

c - 如何处理 c 中的 196,608 个 if 语句?

c# - 分配变量并在 IF 计算中检查它

html - 从数组中选择表单

jquery - 隐藏表单直到单击按钮 - Ruby on Rails

java - 对同一件事执行多个 if 语句的更简单方法