了解 Heroku 'config vars' 示例中的 Ruby

Understanding Ruby on Heroku 'config vars' example

Getting Started with Ruby on Heroku 中,以下示例作为配置变量的使用给出:

<h1>Getting Started with Ruby</h1>

<p>
  Welcome!
</p>

<% for i in 0..(ENV['TIMES'] ? ENV['TIMES'].to_i : 2) do %>
  <p>Hello World #<%= i %>!</p>
<% end %>

这个方法应该是运行TIMES环境变量的个数,但是按我的理解是没有意义的。

我理解 ruby 语法

truthy_or_falsey_value ? evaluates_if_truthy : evaluates_if_falsey

但是这里我们有一些在语法上看起来相似但在语义上不可能相同的东西。请明白的人解释一下这是怎么回事?非常感谢!

它被称为三元运算符,你是对的,这两个是等价的:

ENV['TIMES'] ? ENV['TIMES'].to_i : 2
truthy_or_falsey_value ? evaluates_if_truthy : evaluates_if_falsey

所以发生的事情是三元运算符用于填充范围的最后一个参数:

如果 `ENV['TIMES'] 为 nil,则 for 循环将为:

for i in 0..2

如果 ENV['TIMES'] 设置为 50,for 循环将是:

for i in 0..50

我没有使用 Heroku 的经验,但我从该声明中了解到的是:

首先你有一个 for 循环,它将从 0 循环到特定值。然后你有一个条件语句,如果为真,将 return ENV['TIMES'].to_i.to_iENV['TIMES'] 的 return 值转换为整数),否则它将导致 2。现在,如果您将条件循环和 for 循环结合起来,您就可以弄清楚发生了什么。 如果 ENV['TIMES'] 的计算结果为真,则 for 循环的范围将从 0 到 ENV['TIMES'].to_i 的值 return,否则范围将从 0 到 2。所以最终结果将是 "Hello World" 重复 i 次,具体取决于 ENV['TIMES'] 是否存在。我也是 Ruby 的新手,对语法不是很熟悉,但是嘿,我就是这么理解的。