<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0">
  <channel>
    <title>stephansun (stephansun)</title>
    <link>https://ruby-china.org/stephansun</link>
    <description></description>
    <language>en-us</language>
    <item>
      <title>self.to_enum 求解疑</title>
      <description>&lt;p&gt;《The Ruby Programming Language》5.3.4 Enumerators 这一节中有段代码&lt;/p&gt;
&lt;pre class="highlight ruby"&gt;&lt;code&gt;&lt;span class="k"&gt;def&lt;/span&gt; &lt;span class="nf"&gt;twice&lt;/span&gt;
  &lt;span class="k"&gt;if&lt;/span&gt; &lt;span class="nb"&gt;block_given?&lt;/span&gt;
    &lt;span class="k"&gt;yield&lt;/span&gt;
    &lt;span class="k"&gt;yield&lt;/span&gt;
  &lt;span class="k"&gt;else&lt;/span&gt;
    &lt;span class="nb"&gt;self&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;to_enum&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="ss"&gt;:twice&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
  &lt;span class="k"&gt;end&lt;/span&gt;
&lt;span class="k"&gt;end&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;没看懂，原文中说
You can duplicate this behavior in your own iterator methods by returning &lt;code&gt;self.to_enum&lt;/code&gt; when no block is supplied. Here, for example, is a version of the the &lt;code&gt;twice&lt;/code&gt; iterator shown earlier that can return an enumerator if no block is provided:&lt;/p&gt;

&lt;p&gt;但是这样写有什么实际意义吗？&lt;/p&gt;</description>
      <author>stephansun</author>
      <pubDate>Mon, 17 Mar 2014 13:58:20 +0800</pubDate>
      <link>https://ruby-china.org/topics/17938</link>
      <guid>https://ruby-china.org/topics/17938</guid>
    </item>
  </channel>
</rss>
