无法理解这个Ruby Hashes num Code

时间:2014-11-22 18:57:32

标签: ruby hash

我不理解下面的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;指数字。但

  1. &#39; | num |是什么输出&#39;意思?
  2. 为什么倒计时数字会出现在#{| num |}中?中文
  3. 我会理解代码是否

    <% 10.downto(1) do |num| -%><br>
    Ruby<%= num %><br>
    

    然后它回复了

    Ruby10 Ruby9 Ruby8 Ruby7 Ruby6 Ruby5 Ruby4 Ruby3 Ruby2 Ruby1
    

2 个答案:

答案 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
  • "#{...}"字符串插值,大括号之间的代码结果将插入到最终字符串中。