我不理解下面的Ruby代码......希望有人能解释一下。 当我输入以下代码时
<% output = ' ' -%><br>
<% 10.downto(1) {|num| output << " RUBY#{num}"} -%><br>
<%= output -%><br>
它将在浏览器中显示如下;
RUBY10 RUBY9 RUBY8 RUBY7 RUBY6 RUBY5 RUBY4 RUBY3 RUBY2 RUBY1
我理解这部分&#39; 10.downto(1)&#39;意味着10,9,8 ... 1倒数和&#39; | num |&#39;指数字。但
我会理解代码是否
<% 10.downto(1) do |num| -%><br>
Ruby<%= num %><br>
然后它回复了
Ruby10 Ruby9 Ruby8 Ruby7 Ruby6 Ruby5 Ruby4 Ruby3 Ruby2 Ruby1
答案 0 :(得分:1)
1)'| num |是什么输出'意味着什么?
这并不意味着什么。在第一行,您声明输出是一个字符串。 &lt;&lt;运算符将值附加到字符串。在你的情况下“RUBY#{num}”附加到字符串。最后通过调用output返回字符串,返回字符串的值。
2)为什么倒计时数字出现在#{| num |}中??
您插入了值。基本上你num表示一个变量。每次循环运行时,变量都会发生变化,而“#{}”语法则表示使用变量值。
答案 1 :(得分:1)
10.downto(1)
返回Enumerator
,用于迭代范围[10, 1]
{ ... }
是块,或者是&#34; chunk&#34;可以传递的代码。请参阅:Proc
|num|
是块的参数(本例中为当前数字)output << ...
将值连接到output
字符串(大致相当于+=
)。的 doc 强> "#{...}"
是字符串插值,大括号之间的代码结果将插入到最终字符串中。