<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/css" href="/stylesheets/rss.css"?>
<rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:trackback="http://madskills.com/public/xml/rss/module/trackback/">
  <channel>
    <title>Say what???: Category Ruby Method of the Day</title>
    <link>http://drotner.org/articles/category/ruby-method-of-the-day</link>
    <language>en-us</language>
    <ttl>40</ttl>
    <description>by Kelly McCauley</description>
    <item>
      <title>Ruby Method of the Day - Array.reject!</title>
      <description>&lt;h3&gt;Signature&lt;/h3&gt;




&lt;div class="CodeRay"&gt;
  &lt;div class="code"&gt;&lt;pre&gt;array.reject! {|element| block}  &lt;span class="c"&gt;#=&amp;gt; array or nil&lt;/span&gt;
&lt;/pre&gt;&lt;/div&gt;
&lt;/div&gt;



&lt;p&gt;&lt;code&gt;array.reject {|element| block}&lt;/code&gt; does the exact same thing as
&lt;a href="http://drotner.org/articles/2007/11/14/ruby-method-of-the-day-array-delete-if"&gt;&lt;code&gt;Array.delete_if&lt;/code&gt;&lt;/a&gt;
except that it returns &lt;code&gt;nil&lt;/code&gt; if no changes were made to &lt;code&gt;array&lt;/code&gt;.&lt;/p&gt;

	&lt;h3&gt;Examples&lt;/h3&gt;




&lt;table class="CodeRay"&gt;&lt;tr&gt;
  &lt;td class="line_numbers" title="click to toggle" onclick="with (this.firstChild.style) { display = (display == '') ? 'none' : '' }"&gt;&lt;pre&gt;1&lt;tt&gt;
&lt;/tt&gt;2&lt;tt&gt;
&lt;/tt&gt;3&lt;tt&gt;
&lt;/tt&gt;4&lt;tt&gt;
&lt;/tt&gt;5&lt;tt&gt;
&lt;/tt&gt;6&lt;tt&gt;
&lt;/tt&gt;7&lt;tt&gt;
&lt;/tt&gt;8&lt;tt&gt;
&lt;/tt&gt;9&lt;tt&gt;
&lt;/tt&gt;&lt;strong&gt;10&lt;/strong&gt;&lt;tt&gt;
&lt;/tt&gt;11&lt;tt&gt;
&lt;/tt&gt;12&lt;tt&gt;
&lt;/tt&gt;13&lt;tt&gt;
&lt;/tt&gt;14&lt;tt&gt;
&lt;/tt&gt;15&lt;tt&gt;
&lt;/tt&gt;16&lt;tt&gt;
&lt;/tt&gt;17&lt;tt&gt;
&lt;/tt&gt;18&lt;tt&gt;
&lt;/tt&gt;&lt;/pre&gt;&lt;/td&gt;
  &lt;td class="code"&gt;&lt;pre ondblclick="with (this.style) { overflow = (overflow == 'auto' || overflow == '') ? 'visible' : 'auto' }"&gt;a = [&lt;span class="i"&gt;1&lt;/span&gt;, &lt;span class="i"&gt;2&lt;/span&gt;, &lt;span class="i"&gt;3&lt;/span&gt;, &lt;span class="i"&gt;4&lt;/span&gt;, &lt;span class="i"&gt;5&lt;/span&gt;, &lt;span class="i"&gt;6&lt;/span&gt;, &lt;span class="i"&gt;7&lt;/span&gt;, &lt;span class="i"&gt;8&lt;/span&gt;, &lt;span class="i"&gt;9&lt;/span&gt;, &lt;span class="i"&gt;10&lt;/span&gt;]&lt;tt&gt;
&lt;/tt&gt;&lt;tt&gt;
&lt;/tt&gt;b = a.clone                 &lt;span class="c"&gt;#=&amp;gt; [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]&lt;/span&gt;&lt;tt&gt;
&lt;/tt&gt;b.reject! {&lt;span class="pc"&gt;true&lt;/span&gt;}            &lt;span class="c"&gt;#=&amp;gt; []&lt;/span&gt;&lt;tt&gt;
&lt;/tt&gt;b                           &lt;span class="c"&gt;#=&amp;gt; []&lt;/span&gt;&lt;tt&gt;
&lt;/tt&gt;&lt;tt&gt;
&lt;/tt&gt;b = a.clone                 &lt;span class="c"&gt;#=&amp;gt; [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]&lt;/span&gt;&lt;tt&gt;
&lt;/tt&gt;b.reject! {&lt;span class="pc"&gt;false&lt;/span&gt;}           &lt;span class="c"&gt;#=&amp;gt; nil&lt;/span&gt;&lt;tt&gt;
&lt;/tt&gt;b                           &lt;span class="c"&gt;#=&amp;gt; [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]&lt;/span&gt;&lt;tt&gt;
&lt;/tt&gt;&lt;tt&gt;
&lt;/tt&gt;b = a.clone                 &lt;span class="c"&gt;#=&amp;gt; [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]&lt;/span&gt;&lt;tt&gt;
&lt;/tt&gt;b.reject! {|n| n == &lt;span class="i"&gt;3&lt;/span&gt;}      &lt;span class="c"&gt;#=&amp;gt; [1, 2, 4, 5, 6, 7, 8, 9, 10]&lt;/span&gt;&lt;tt&gt;
&lt;/tt&gt;b                           &lt;span class="c"&gt;#=&amp;gt; [1, 2, 4, 5, 6, 7, 8, 9, 10]&lt;/span&gt;&lt;tt&gt;
&lt;/tt&gt;&lt;tt&gt;
&lt;/tt&gt;b = a.clone                 &lt;span class="c"&gt;#=&amp;gt; [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]&lt;/span&gt;&lt;tt&gt;
&lt;/tt&gt;b.reject! {|n| n % &lt;span class="i"&gt;2&lt;/span&gt; == &lt;span class="i"&gt;0&lt;/span&gt;}  &lt;span class="c"&gt;#=&amp;gt; [1, 3, 5, 7, 9]&lt;/span&gt;&lt;tt&gt;
&lt;/tt&gt;b                           &lt;span class="c"&gt;#=&amp;gt; [1, 3, 5, 7, 9]&lt;/span&gt;&lt;tt&gt;
&lt;/tt&gt;&lt;tt&gt;
&lt;/tt&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;&lt;/table&gt;



	&lt;h3&gt;Documentation Reference&lt;/h3&gt;


	&lt;p&gt;Ruby version 1.8.6&lt;/p&gt;


	&lt;p&gt;&lt;a href="http://www.ruby-doc.org"&gt;www.ruby-doc.org&lt;/a&gt; : &lt;a href="http://www.ruby-doc.org/core/classes/Array.html#M002220"&gt;Array.reject!&lt;/a&gt;&lt;/p&gt;


</description>
      <pubDate>Wed, 21 Nov 2007 00:01:00 -0600</pubDate>
      <guid isPermaLink="false">urn:uuid:a738fd50-06a5-4fdc-9edb-ef25d2895f47</guid>
      <author>Kelly McCauley</author>
      <link>http://drotner.org/articles/2007/11/21/ruby-method-of-the-day-array-inplace-reject</link>
      <category>Ruby Method of the Day</category>
      <category>Programming</category>
      <category>ruby</category>
      <category>rmotd</category>
      <trackback:ping>http://drotner.org/articles/trackback/75</trackback:ping>
    </item>
    <item>
      <title>Ruby Method of the Day - Array.reject</title>
      <description>&lt;h3&gt;Signature&lt;/h3&gt;




&lt;div class="CodeRay"&gt;
  &lt;div class="code"&gt;&lt;pre&gt;array.reject {|element| block}    &lt;span class="c"&gt;#=&amp;gt; new_array&lt;/span&gt;
&lt;/pre&gt;&lt;/div&gt;
&lt;/div&gt;



&lt;p&gt;&lt;code&gt;array.reject {|element| block}&lt;/code&gt; iterates over
&lt;code&gt;array&lt;/code&gt;&amp;#8217;s elements and returns &lt;code&gt;new_array&lt;/code&gt; that contains any element
in &lt;code&gt;array&lt;/code&gt; where the block returns either &lt;code&gt;nil&lt;/code&gt; or &lt;code&gt;false&lt;/code&gt;.&lt;/p&gt;

	&lt;h3&gt;Examples&lt;/h3&gt;




&lt;table class="CodeRay"&gt;&lt;tr&gt;
  &lt;td class="line_numbers" title="click to toggle" onclick="with (this.firstChild.style) { display = (display == '') ? 'none' : '' }"&gt;&lt;pre&gt;1&lt;tt&gt;
&lt;/tt&gt;2&lt;tt&gt;
&lt;/tt&gt;3&lt;tt&gt;
&lt;/tt&gt;4&lt;tt&gt;
&lt;/tt&gt;5&lt;tt&gt;
&lt;/tt&gt;6&lt;tt&gt;
&lt;/tt&gt;7&lt;tt&gt;
&lt;/tt&gt;8&lt;tt&gt;
&lt;/tt&gt;9&lt;tt&gt;
&lt;/tt&gt;&lt;strong&gt;10&lt;/strong&gt;&lt;tt&gt;
&lt;/tt&gt;11&lt;tt&gt;
&lt;/tt&gt;&lt;/pre&gt;&lt;/td&gt;
  &lt;td class="code"&gt;&lt;pre ondblclick="with (this.style) { overflow = (overflow == 'auto' || overflow == '') ? 'visible' : 'auto' }"&gt;a = [&lt;span class="i"&gt;1&lt;/span&gt;, &lt;span class="i"&gt;2&lt;/span&gt;, &lt;span class="i"&gt;3&lt;/span&gt;, &lt;span class="i"&gt;4&lt;/span&gt;, &lt;span class="i"&gt;5&lt;/span&gt;, &lt;span class="i"&gt;6&lt;/span&gt;, &lt;span class="i"&gt;7&lt;/span&gt;, &lt;span class="i"&gt;8&lt;/span&gt;, &lt;span class="i"&gt;9&lt;/span&gt;, &lt;span class="i"&gt;10&lt;/span&gt;]&lt;tt&gt;
&lt;/tt&gt;&lt;tt&gt;
&lt;/tt&gt;a.reject {|n| &lt;span class="pc"&gt;nil&lt;/span&gt;}                        &lt;span class="c"&gt;#=&amp;gt; [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]&lt;/span&gt;&lt;tt&gt;
&lt;/tt&gt;a.reject {|n| &lt;span class="pc"&gt;false&lt;/span&gt;}                      &lt;span class="c"&gt;#=&amp;gt; [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]&lt;/span&gt;&lt;tt&gt;
&lt;/tt&gt;a.reject {|n| &lt;span class="pc"&gt;true&lt;/span&gt;}                       &lt;span class="c"&gt;#=&amp;gt; []&lt;/span&gt;&lt;tt&gt;
&lt;/tt&gt;a.reject {|n| &lt;span class="s"&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;/span&gt;}                         &lt;span class="c"&gt;#=&amp;gt; []&lt;/span&gt;&lt;tt&gt;
&lt;/tt&gt;a.reject {|n| &lt;span class="i"&gt;0&lt;/span&gt;}                          &lt;span class="c"&gt;#=&amp;gt; []&lt;/span&gt;&lt;tt&gt;
&lt;/tt&gt;&lt;tt&gt;
&lt;/tt&gt;a.reject {|n| n == &lt;span class="i"&gt;3&lt;/span&gt;}                     &lt;span class="c"&gt;#=&amp;gt; [1, 2, 4, 5, 6, 7, 8, 9, 10]&lt;/span&gt;&lt;tt&gt;
&lt;/tt&gt;a.reject {|n| n % &lt;span class="i"&gt;2&lt;/span&gt; == &lt;span class="i"&gt;0&lt;/span&gt; }                            &lt;span class="c"&gt;#=&amp;gt; [1, 3, 5, 7, 9]&lt;/span&gt;&lt;tt&gt;
&lt;/tt&gt;a.reject {|n| &lt;span class="pc"&gt;true&lt;/span&gt; &lt;span class="r"&gt;if&lt;/span&gt; (n % &lt;span class="i"&gt;3&lt;/span&gt; == &lt;span class="i"&gt;0&lt;/span&gt;) || (n % &lt;span class="i"&gt;5&lt;/span&gt; == &lt;span class="i"&gt;0&lt;/span&gt;) }  &lt;span class="c"&gt;#=&amp;gt; [1, 2, 4, 7, 8]&lt;/span&gt;&lt;tt&gt;
&lt;/tt&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;&lt;/table&gt;



	&lt;h3&gt;Documentation Reference&lt;/h3&gt;


	&lt;p&gt;Ruby version 1.8.6&lt;/p&gt;


	&lt;p&gt;&lt;a href="http://www.ruby-doc.org"&gt;www.ruby-doc.org&lt;/a&gt; : &lt;a href="http://www.ruby-doc.org/core/classes/Array.html#M002219"&gt;Array.reject&lt;/a&gt;&lt;/p&gt;


</description>
      <pubDate>Tue, 20 Nov 2007 00:01:00 -0600</pubDate>
      <guid isPermaLink="false">urn:uuid:1cf13dd6-30e9-4676-b8e6-d51b4bf65fd5</guid>
      <author>Kelly McCauley</author>
      <link>http://drotner.org/articles/2007/11/20/ruby-method-of-the-day-array-reject</link>
      <category>Ruby Method of the Day</category>
      <category>Programming</category>
      <category>ruby</category>
      <category>rmotd</category>
      <trackback:ping>http://drotner.org/articles/trackback/74</trackback:ping>
    </item>
    <item>
      <title>Ruby Method of the Day - Array.last</title>
      <description>&lt;h3&gt;Signature&lt;/h3&gt;




&lt;div class="CodeRay"&gt;
  &lt;div class="code"&gt;&lt;pre&gt;array.last            &lt;span class="c"&gt;#=&amp;gt; object or nil&lt;/span&gt;
array.last(number)    &lt;span class="c"&gt;#=&amp;gt; new_array&lt;/span&gt;
&lt;/pre&gt;&lt;/div&gt;
&lt;/div&gt;



&lt;p&gt;&lt;code&gt;array.last&lt;/code&gt; returns the last element of &lt;code&gt;array&lt;/code&gt; or it returns &lt;code&gt;nil&lt;/code&gt; if
&lt;code&gt;array&lt;/code&gt; is empty.  &lt;code&gt;array.last(number)&lt;/code&gt; returns the last &lt;code&gt;number&lt;/code&gt; elements of
&lt;code&gt;array&lt;/code&gt; or it returns an empty array if &lt;code&gt;array&lt;/code&gt; is empty.&lt;/p&gt;

	&lt;h3&gt;Examples&lt;/h3&gt;




&lt;table class="CodeRay"&gt;&lt;tr&gt;
  &lt;td class="line_numbers" title="click to toggle" onclick="with (this.firstChild.style) { display = (display == '') ? 'none' : '' }"&gt;&lt;pre&gt;1&lt;tt&gt;
&lt;/tt&gt;2&lt;tt&gt;
&lt;/tt&gt;3&lt;tt&gt;
&lt;/tt&gt;4&lt;tt&gt;
&lt;/tt&gt;5&lt;tt&gt;
&lt;/tt&gt;6&lt;tt&gt;
&lt;/tt&gt;7&lt;tt&gt;
&lt;/tt&gt;8&lt;tt&gt;
&lt;/tt&gt;9&lt;tt&gt;
&lt;/tt&gt;&lt;strong&gt;10&lt;/strong&gt;&lt;tt&gt;
&lt;/tt&gt;&lt;/pre&gt;&lt;/td&gt;
  &lt;td class="code"&gt;&lt;pre ondblclick="with (this.style) { overflow = (overflow == 'auto' || overflow == '') ? 'visible' : 'auto' }"&gt;a = [&lt;span class="s"&gt;&lt;span class="dl"&gt;&amp;quot;&lt;/span&gt;&lt;span class="k"&gt;a&lt;/span&gt;&lt;span class="dl"&gt;&amp;quot;&lt;/span&gt;&lt;/span&gt;, &lt;span class="s"&gt;&lt;span class="dl"&gt;&amp;quot;&lt;/span&gt;&lt;span class="k"&gt;b&lt;/span&gt;&lt;span class="dl"&gt;&amp;quot;&lt;/span&gt;&lt;/span&gt;, &lt;span class="s"&gt;&lt;span class="dl"&gt;&amp;quot;&lt;/span&gt;&lt;span class="k"&gt;c&lt;/span&gt;&lt;span class="dl"&gt;&amp;quot;&lt;/span&gt;&lt;/span&gt;, &lt;span class="s"&gt;&lt;span class="dl"&gt;&amp;quot;&lt;/span&gt;&lt;span class="k"&gt;d&lt;/span&gt;&lt;span class="dl"&gt;&amp;quot;&lt;/span&gt;&lt;/span&gt;, &lt;span class="s"&gt;&lt;span class="dl"&gt;&amp;quot;&lt;/span&gt;&lt;span class="k"&gt;e&lt;/span&gt;&lt;span class="dl"&gt;&amp;quot;&lt;/span&gt;&lt;/span&gt;, &lt;span class="s"&gt;&lt;span class="dl"&gt;&amp;quot;&lt;/span&gt;&lt;span class="k"&gt;f&lt;/span&gt;&lt;span class="dl"&gt;&amp;quot;&lt;/span&gt;&lt;/span&gt;]&lt;tt&gt;
&lt;/tt&gt;&lt;tt&gt;
&lt;/tt&gt;a.last        &lt;span class="c"&gt;#=&amp;gt; &amp;quot;f&amp;quot;&lt;/span&gt;&lt;tt&gt;
&lt;/tt&gt;[].last       &lt;span class="c"&gt;#=&amp;gt; nil&lt;/span&gt;&lt;tt&gt;
&lt;/tt&gt;&lt;tt&gt;
&lt;/tt&gt;a.last(&lt;span class="i"&gt;0&lt;/span&gt;)     &lt;span class="c"&gt;#=&amp;gt; []&lt;/span&gt;&lt;tt&gt;
&lt;/tt&gt;a.last(&lt;span class="i"&gt;1&lt;/span&gt;)     &lt;span class="c"&gt;#=&amp;gt; [&amp;quot;f&amp;quot;]&lt;/span&gt;&lt;tt&gt;
&lt;/tt&gt;a.last(&lt;span class="i"&gt;4&lt;/span&gt;)     &lt;span class="c"&gt;#=&amp;gt; [&amp;quot;c&amp;quot;, &amp;quot;d&amp;quot;, &amp;quot;e&amp;quot;, &amp;quot;f&amp;quot;]&lt;/span&gt;&lt;tt&gt;
&lt;/tt&gt;a.last(&lt;span class="i"&gt;99&lt;/span&gt;)    &lt;span class="c"&gt;#=&amp;gt; [&amp;quot;a&amp;quot;, &amp;quot;b&amp;quot;, &amp;quot;c&amp;quot;, &amp;quot;d&amp;quot;, &amp;quot;e&amp;quot;, &amp;quot;f&amp;quot;]&lt;/span&gt;&lt;tt&gt;
&lt;/tt&gt;[].last(&lt;span class="i"&gt;10&lt;/span&gt;)   &lt;span class="c"&gt;#=&amp;gt; []&lt;/span&gt;&lt;tt&gt;
&lt;/tt&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;&lt;/table&gt;



	&lt;h3&gt;Documentation Reference&lt;/h3&gt;


	&lt;p&gt;Ruby version 1.8.6&lt;/p&gt;


	&lt;p&gt;&lt;a href="http://www.ruby-doc.org"&gt;www.ruby-doc.org&lt;/a&gt; : &lt;a href="http://www.ruby-doc.org/core/classes/Array.html#M002188"&gt;Array.last&lt;/a&gt;&lt;/p&gt;


</description>
      <pubDate>Mon, 19 Nov 2007 00:01:00 -0600</pubDate>
      <guid isPermaLink="false">urn:uuid:b14ce645-9df5-4443-8fa1-fd6440914ac9</guid>
      <author>Kelly McCauley</author>
      <link>http://drotner.org/articles/2007/11/19/ruby-method-of-the-day-array-last</link>
      <category>Ruby Method of the Day</category>
      <category>Programming</category>
      <category>ruby</category>
      <category>rmotd</category>
      <trackback:ping>http://drotner.org/articles/trackback/73</trackback:ping>
    </item>
    <item>
      <title>Ruby Method of the Day - Array.first</title>
      <description>&lt;h3&gt;Signature&lt;/h3&gt;




&lt;div class="CodeRay"&gt;
  &lt;div class="code"&gt;&lt;pre&gt;array.first           &lt;span class="c"&gt;#=&amp;gt; object or nil&lt;/span&gt;
array.first(number)   &lt;span class="c"&gt;#=&amp;gt; new_array&lt;/span&gt;
&lt;/pre&gt;&lt;/div&gt;
&lt;/div&gt;



&lt;p&gt;&lt;code&gt;array.first&lt;/code&gt; returns the first element of &lt;code&gt;array&lt;/code&gt; or it returns &lt;code&gt;nil&lt;/code&gt; if
&lt;code&gt;array&lt;/code&gt; is empty.  &lt;code&gt;array.first(number)&lt;/code&gt; returns the first &lt;code&gt;number&lt;/code&gt; elements of
&lt;code&gt;array&lt;/code&gt; or it returns an empty array if &lt;code&gt;array&lt;/code&gt; is empty.&lt;/p&gt;

	&lt;h3&gt;Examples&lt;/h3&gt;




&lt;table class="CodeRay"&gt;&lt;tr&gt;
  &lt;td class="line_numbers" title="click to toggle" onclick="with (this.firstChild.style) { display = (display == '') ? 'none' : '' }"&gt;&lt;pre&gt;1&lt;tt&gt;
&lt;/tt&gt;2&lt;tt&gt;
&lt;/tt&gt;3&lt;tt&gt;
&lt;/tt&gt;4&lt;tt&gt;
&lt;/tt&gt;5&lt;tt&gt;
&lt;/tt&gt;6&lt;tt&gt;
&lt;/tt&gt;7&lt;tt&gt;
&lt;/tt&gt;8&lt;tt&gt;
&lt;/tt&gt;9&lt;tt&gt;
&lt;/tt&gt;&lt;strong&gt;10&lt;/strong&gt;&lt;tt&gt;
&lt;/tt&gt;&lt;/pre&gt;&lt;/td&gt;
  &lt;td class="code"&gt;&lt;pre ondblclick="with (this.style) { overflow = (overflow == 'auto' || overflow == '') ? 'visible' : 'auto' }"&gt;a = [&lt;span class="s"&gt;&lt;span class="dl"&gt;&amp;quot;&lt;/span&gt;&lt;span class="k"&gt;a&lt;/span&gt;&lt;span class="dl"&gt;&amp;quot;&lt;/span&gt;&lt;/span&gt;, &lt;span class="s"&gt;&lt;span class="dl"&gt;&amp;quot;&lt;/span&gt;&lt;span class="k"&gt;b&lt;/span&gt;&lt;span class="dl"&gt;&amp;quot;&lt;/span&gt;&lt;/span&gt;, &lt;span class="s"&gt;&lt;span class="dl"&gt;&amp;quot;&lt;/span&gt;&lt;span class="k"&gt;c&lt;/span&gt;&lt;span class="dl"&gt;&amp;quot;&lt;/span&gt;&lt;/span&gt;, &lt;span class="s"&gt;&lt;span class="dl"&gt;&amp;quot;&lt;/span&gt;&lt;span class="k"&gt;d&lt;/span&gt;&lt;span class="dl"&gt;&amp;quot;&lt;/span&gt;&lt;/span&gt;, &lt;span class="s"&gt;&lt;span class="dl"&gt;&amp;quot;&lt;/span&gt;&lt;span class="k"&gt;e&lt;/span&gt;&lt;span class="dl"&gt;&amp;quot;&lt;/span&gt;&lt;/span&gt;, &lt;span class="s"&gt;&lt;span class="dl"&gt;&amp;quot;&lt;/span&gt;&lt;span class="k"&gt;f&lt;/span&gt;&lt;span class="dl"&gt;&amp;quot;&lt;/span&gt;&lt;/span&gt;]&lt;tt&gt;
&lt;/tt&gt;&lt;tt&gt;
&lt;/tt&gt;a.first           &lt;span class="c"&gt;#=&amp;gt; &amp;quot;a&amp;quot;&lt;/span&gt;&lt;tt&gt;
&lt;/tt&gt;[].first          &lt;span class="c"&gt;#=&amp;gt; nil&lt;/span&gt;&lt;tt&gt;
&lt;/tt&gt;&lt;tt&gt;
&lt;/tt&gt;a.first(&lt;span class="i"&gt;0&lt;/span&gt;)        &lt;span class="c"&gt;#=&amp;gt; []&lt;/span&gt;&lt;tt&gt;
&lt;/tt&gt;a.first(&lt;span class="i"&gt;1&lt;/span&gt;)        &lt;span class="c"&gt;#=&amp;gt; [&amp;quot;a&amp;quot;]&lt;/span&gt;&lt;tt&gt;
&lt;/tt&gt;a.first(&lt;span class="i"&gt;99&lt;/span&gt;)       &lt;span class="c"&gt;#=&amp;gt; [&amp;quot;a&amp;quot;, &amp;quot;b&amp;quot;, &amp;quot;c&amp;quot;, &amp;quot;d&amp;quot;, &amp;quot;e&amp;quot;, &amp;quot;f&amp;quot;]&lt;/span&gt;&lt;tt&gt;
&lt;/tt&gt;[].first(&lt;span class="i"&gt;10&lt;/span&gt;)      &lt;span class="c"&gt;#=&amp;gt; []&lt;/span&gt;&lt;tt&gt;
&lt;/tt&gt;&lt;tt&gt;
&lt;/tt&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;&lt;/table&gt;



	&lt;h3&gt;Documentation Reference&lt;/h3&gt;


	&lt;p&gt;Ruby version 1.8.6&lt;/p&gt;


	&lt;p&gt;&lt;a href="http://www.ruby-doc.org"&gt;www.ruby-doc.org&lt;/a&gt; : &lt;a href="http://www.ruby-doc.org/core/classes/Array.html#M002187"&gt;Array.first&lt;/a&gt;&lt;/p&gt;


</description>
      <pubDate>Fri, 16 Nov 2007 00:01:00 -0600</pubDate>
      <guid isPermaLink="false">urn:uuid:ac803d19-61bf-461a-ba85-112aba4b804f</guid>
      <author>Kelly McCauley</author>
      <link>http://drotner.org/articles/2007/11/16/ruby-method-of-the-day-array-first</link>
      <category>Ruby Method of the Day</category>
      <category>Programming</category>
      <category>ruby</category>
      <category>rmotd</category>
      <trackback:ping>http://drotner.org/articles/trackback/72</trackback:ping>
    </item>
    <item>
      <title>Ruby Method of the Day - Array.fetch</title>
      <description>&lt;h3&gt;Signature&lt;/h3&gt;




&lt;div class="CodeRay"&gt;
  &lt;div class="code"&gt;&lt;pre&gt;array.fetch(position)             &lt;span class="c"&gt;#=&amp;gt; object&lt;/span&gt;
&lt;/pre&gt;&lt;/div&gt;
&lt;/div&gt;



&lt;p&gt;&lt;code&gt;array.fetch(position)&lt;/code&gt; returns the object located at &lt;code&gt;position&lt;/code&gt;.  If
&lt;code&gt;position&lt;/code&gt; is outside &lt;code&gt;array&lt;/code&gt; an &lt;code&gt;IndexError&lt;/code&gt; is thrown.  Note that if
&lt;code&gt;position&lt;/code&gt; is negative and outside of &lt;code&gt;array&lt;/code&gt; then the index number reported in
the exception will be reported as &lt;code&gt;position - array.length&lt;/code&gt;.  I&amp;#8217;ve
submitted a
&lt;a href="http://rubyforge.org/tracker/index.php?func=detail&amp;#38;aid=15498&amp;#38;group_id=426&amp;#38;atid=1698"&gt;patch&lt;/a&gt;
to fix it.  If &lt;code&gt;position&lt;/code&gt; is 0 or positive then start counting from the
beginning of the array.  If &lt;code&gt;position&lt;/code&gt; is negative then start counting from the
end of the array.&lt;/p&gt;



&lt;div class="CodeRay"&gt;
  &lt;div class="code"&gt;&lt;pre&gt;array.fetch(position, default)    &lt;span class="c"&gt;#=&amp;gt; object&lt;/span&gt;
&lt;/pre&gt;&lt;/div&gt;
&lt;/div&gt;



&lt;p&gt;&lt;code&gt;array.fetch(position, default)&lt;/code&gt; returns the object located at
&lt;code&gt;position&lt;/code&gt;.  If &lt;code&gt;position&lt;/code&gt; is outside of &lt;code&gt;array&lt;/code&gt; then &lt;code&gt;default&lt;/code&gt; is returned.
If &lt;code&gt;position&lt;/code&gt; is 0 or positive then start counting from the beginning of the
array.  If &lt;code&gt;position&lt;/code&gt; is negative then start counting from the end of the
array.&lt;/p&gt;



&lt;div class="CodeRay"&gt;
  &lt;div class="code"&gt;&lt;pre&gt;array.fetch(position) {|position| block}  &lt;span class="c"&gt;#=&amp;gt; object&lt;/span&gt;
&lt;/pre&gt;&lt;/div&gt;
&lt;/div&gt;



&lt;p&gt;&lt;code&gt;array.fetch(position) {|position| block}&lt;/code&gt; returns the object
located at &lt;code&gt;position&lt;/code&gt;.  If &lt;code&gt;position&lt;/code&gt; is outside of &lt;code&gt;array&lt;/code&gt; then
&lt;code&gt;block&lt;/code&gt;&amp;#8217;s returned results is returned.  If &lt;code&gt;position&lt;/code&gt; is 0 or
positive then start counting from the beginning of the array.  If &lt;code&gt;position&lt;/code&gt; is
negative then start counting from the end of the array.&lt;/p&gt;

	&lt;h3&gt;Examples&lt;/h3&gt;




&lt;table class="CodeRay"&gt;&lt;tr&gt;
  &lt;td class="line_numbers" title="click to toggle" onclick="with (this.firstChild.style) { display = (display == '') ? 'none' : '' }"&gt;&lt;pre&gt;1&lt;tt&gt;
&lt;/tt&gt;2&lt;tt&gt;
&lt;/tt&gt;3&lt;tt&gt;
&lt;/tt&gt;4&lt;tt&gt;
&lt;/tt&gt;5&lt;tt&gt;
&lt;/tt&gt;6&lt;tt&gt;
&lt;/tt&gt;7&lt;tt&gt;
&lt;/tt&gt;8&lt;tt&gt;
&lt;/tt&gt;9&lt;tt&gt;
&lt;/tt&gt;&lt;strong&gt;10&lt;/strong&gt;&lt;tt&gt;
&lt;/tt&gt;11&lt;tt&gt;
&lt;/tt&gt;12&lt;tt&gt;
&lt;/tt&gt;13&lt;tt&gt;
&lt;/tt&gt;14&lt;tt&gt;
&lt;/tt&gt;15&lt;tt&gt;
&lt;/tt&gt;16&lt;tt&gt;
&lt;/tt&gt;17&lt;tt&gt;
&lt;/tt&gt;18&lt;tt&gt;
&lt;/tt&gt;19&lt;tt&gt;
&lt;/tt&gt;&lt;strong&gt;20&lt;/strong&gt;&lt;tt&gt;
&lt;/tt&gt;21&lt;tt&gt;
&lt;/tt&gt;22&lt;tt&gt;
&lt;/tt&gt;23&lt;tt&gt;
&lt;/tt&gt;24&lt;tt&gt;
&lt;/tt&gt;25&lt;tt&gt;
&lt;/tt&gt;26&lt;tt&gt;
&lt;/tt&gt;27&lt;tt&gt;
&lt;/tt&gt;28&lt;tt&gt;
&lt;/tt&gt;29&lt;tt&gt;
&lt;/tt&gt;&lt;strong&gt;30&lt;/strong&gt;&lt;tt&gt;
&lt;/tt&gt;31&lt;tt&gt;
&lt;/tt&gt;32&lt;tt&gt;
&lt;/tt&gt;33&lt;tt&gt;
&lt;/tt&gt;34&lt;tt&gt;
&lt;/tt&gt;35&lt;tt&gt;
&lt;/tt&gt;36&lt;tt&gt;
&lt;/tt&gt;37&lt;tt&gt;
&lt;/tt&gt;38&lt;tt&gt;
&lt;/tt&gt;39&lt;tt&gt;
&lt;/tt&gt;&lt;strong&gt;40&lt;/strong&gt;&lt;tt&gt;
&lt;/tt&gt;41&lt;tt&gt;
&lt;/tt&gt;42&lt;tt&gt;
&lt;/tt&gt;43&lt;tt&gt;
&lt;/tt&gt;44&lt;tt&gt;
&lt;/tt&gt;&lt;/pre&gt;&lt;/td&gt;
  &lt;td class="code"&gt;&lt;pre ondblclick="with (this.style) { overflow = (overflow == 'auto' || overflow == '') ? 'visible' : 'auto' }"&gt;a = [&lt;span class="s"&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="k"&gt;a&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;/span&gt;,&lt;span class="s"&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="k"&gt;b&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;/span&gt;,&lt;span class="s"&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="k"&gt;c&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;/span&gt;,&lt;span class="s"&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="k"&gt;d&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;/span&gt;,&lt;span class="s"&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="k"&gt;e&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;/span&gt;,&lt;span class="s"&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="k"&gt;f&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;/span&gt;]   &lt;span class="c"&gt;#=&amp;gt; [&amp;quot;a&amp;quot;, &amp;quot;b&amp;quot;, &amp;quot;c&amp;quot;, &amp;quot;d&amp;quot;, &amp;quot;e&amp;quot;, &amp;quot;f&amp;quot;]&lt;/span&gt;&lt;tt&gt;
&lt;/tt&gt;a.fetch(&lt;span class="i"&gt;2&lt;/span&gt;)                      &lt;span class="c"&gt;#=&amp;gt; &amp;quot;c&amp;quot;&lt;/span&gt;&lt;tt&gt;
&lt;/tt&gt;a.fetch(&lt;span class="i"&gt;-2&lt;/span&gt;)                     &lt;span class="c"&gt;#=&amp;gt; &amp;quot;e&amp;quot;&lt;/span&gt;&lt;tt&gt;
&lt;/tt&gt;&lt;tt&gt;
&lt;/tt&gt;&lt;span class="r"&gt;begin&lt;/span&gt;&lt;tt&gt;
&lt;/tt&gt;  a.fetch(&lt;span class="i"&gt;99&lt;/span&gt;)&lt;tt&gt;
&lt;/tt&gt;&lt;span class="r"&gt;rescue&lt;/span&gt; &lt;span class="co"&gt;Exception&lt;/span&gt; =&amp;gt; e&lt;tt&gt;
&lt;/tt&gt;  e.inspect                     &lt;span class="c"&gt;#=&amp;gt; &amp;quot;#&amp;lt;IndexError: index 99 out of array&amp;gt;&amp;quot;&lt;/span&gt;&lt;tt&gt;
&lt;/tt&gt;&lt;span class="r"&gt;end&lt;/span&gt;&lt;tt&gt;
&lt;/tt&gt;&lt;tt&gt;
&lt;/tt&gt;&lt;span class="r"&gt;begin&lt;/span&gt;&lt;tt&gt;
&lt;/tt&gt;  a.fetch(&lt;span class="i"&gt;-99&lt;/span&gt;)&lt;tt&gt;
&lt;/tt&gt;&lt;span class="r"&gt;rescue&lt;/span&gt; &lt;span class="co"&gt;Exception&lt;/span&gt; =&amp;gt; e&lt;tt&gt;
&lt;/tt&gt;  &lt;span class="c"&gt;# Note that it reports an index of -93 (i.e. -99 - a.length).&lt;/span&gt;&lt;tt&gt;
&lt;/tt&gt;  e.inspect                     &lt;span class="c"&gt;#=&amp;gt; &amp;quot;#&amp;lt;IndexError: index -93 out of array&amp;gt;&amp;quot;&lt;/span&gt;&lt;tt&gt;
&lt;/tt&gt;&lt;span class="r"&gt;end&lt;/span&gt;&lt;tt&gt;
&lt;/tt&gt;&lt;tt&gt;
&lt;/tt&gt;&lt;tt&gt;
&lt;/tt&gt;&lt;span class="r"&gt;begin&lt;/span&gt;&lt;tt&gt;
&lt;/tt&gt;  a.fetch(&lt;span class="i"&gt;-7&lt;/span&gt;)&lt;tt&gt;
&lt;/tt&gt;&lt;span class="r"&gt;rescue&lt;/span&gt; &lt;span class="co"&gt;Exception&lt;/span&gt; =&amp;gt; e&lt;tt&gt;
&lt;/tt&gt;  &lt;span class="c"&gt;# Note that it reports an index of -1 (i.e. -7 - a.length).&lt;/span&gt;&lt;tt&gt;
&lt;/tt&gt;  e.inspect                     &lt;span class="c"&gt;#=&amp;gt; &amp;quot;#&amp;lt;IndexError: index -1 out of array&amp;gt;&amp;quot;&lt;/span&gt;&lt;tt&gt;
&lt;/tt&gt;&lt;span class="r"&gt;end&lt;/span&gt;&lt;tt&gt;
&lt;/tt&gt;&lt;tt&gt;
&lt;/tt&gt;&lt;tt&gt;
&lt;/tt&gt;a.fetch(&lt;span class="i"&gt;4&lt;/span&gt;, &lt;span class="s"&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="k"&gt;z&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;/span&gt;)                 &lt;span class="c"&gt;#=&amp;gt; &amp;quot;e&amp;quot;&lt;/span&gt;&lt;tt&gt;
&lt;/tt&gt;a.fetch(&lt;span class="i"&gt;99&lt;/span&gt;, &lt;span class="s"&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="k"&gt;z&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;/span&gt;)                &lt;span class="c"&gt;#=&amp;gt; &amp;quot;z&amp;quot;&lt;/span&gt;&lt;tt&gt;
&lt;/tt&gt;&lt;tt&gt;
&lt;/tt&gt;a.fetch(&lt;span class="i"&gt;4&lt;/span&gt;){&lt;span class="pc"&gt;false&lt;/span&gt;}               &lt;span class="c"&gt;#=&amp;gt; &amp;quot;e&amp;quot;&lt;/span&gt;&lt;tt&gt;
&lt;/tt&gt;a.fetch(&lt;span class="i"&gt;99&lt;/span&gt;){&lt;span class="pc"&gt;false&lt;/span&gt;}              &lt;span class="c"&gt;#=&amp;gt; false&lt;/span&gt;&lt;tt&gt;
&lt;/tt&gt;&lt;tt&gt;
&lt;/tt&gt;&lt;span class="r"&gt;def&lt;/span&gt; &lt;span class="fu"&gt;default_fetch&lt;/span&gt;(ary, position)&lt;tt&gt;
&lt;/tt&gt;  element = &lt;span class="pc"&gt;nil&lt;/span&gt;&lt;tt&gt;
&lt;/tt&gt;  &lt;span class="r"&gt;if&lt;/span&gt; position &amp;gt; ary.length&lt;tt&gt;
&lt;/tt&gt;    element = ary.last&lt;tt&gt;
&lt;/tt&gt;  &lt;span class="r"&gt;else&lt;/span&gt;&lt;tt&gt;
&lt;/tt&gt;    element = ary.first&lt;tt&gt;
&lt;/tt&gt;  &lt;span class="r"&gt;end&lt;/span&gt;&lt;tt&gt;
&lt;/tt&gt;&lt;span class="r"&gt;end&lt;/span&gt;&lt;tt&gt;
&lt;/tt&gt;&lt;tt&gt;
&lt;/tt&gt;a.fetch(&lt;span class="i"&gt;99&lt;/span&gt;){|position| default_fetch(a, position)}    &lt;span class="c"&gt;#=&amp;gt; &amp;quot;f&amp;quot;&lt;/span&gt;&lt;tt&gt;
&lt;/tt&gt;a.fetch(&lt;span class="i"&gt;4&lt;/span&gt;){|position| default_fetch(a, position)}     &lt;span class="c"&gt;#=&amp;gt; &amp;quot;e&amp;quot;&lt;/span&gt;&lt;tt&gt;
&lt;/tt&gt;a.fetch(&lt;span class="i"&gt;-99&lt;/span&gt;){|position| default_fetch(a, position)}   &lt;span class="c"&gt;#=&amp;gt; &amp;quot;a&amp;quot;&lt;/span&gt;&lt;tt&gt;
&lt;/tt&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;&lt;/table&gt;



	&lt;h3&gt;Documentation Reference&lt;/h3&gt;


	&lt;p&gt;Ruby version 1.8.6&lt;/p&gt;


	&lt;p&gt;&lt;a href="http://www.ruby-doc.org"&gt;www.ruby-doc.org&lt;/a&gt; : &lt;a href="http://www.ruby-doc.org/core/classes/Array.html#M002186"&gt;Array.fetch&lt;/a&gt;&lt;/p&gt;


</description>
      <pubDate>Thu, 15 Nov 2007 00:01:00 -0600</pubDate>
      <guid isPermaLink="false">urn:uuid:097a38a9-04ca-47a3-a17c-00116bf58b58</guid>
      <author>Kelly McCauley</author>
      <link>http://drotner.org/articles/2007/11/15/ruby-method-of-the-day-array-fetch</link>
      <category>Ruby Method of the Day</category>
      <category>Programming</category>
      <category>ruby</category>
      <category>rmotd</category>
      <trackback:ping>http://drotner.org/articles/trackback/71</trackback:ping>
    </item>
    <item>
      <title>Ruby Method of the Day - Array.delete_if</title>
      <description>&lt;h3&gt;Signature&lt;/h3&gt;




&lt;div class="CodeRay"&gt;
  &lt;div class="code"&gt;&lt;pre&gt;array.delete_if {|element| block}   &lt;span class="c"&gt;#=&amp;gt; array&lt;/span&gt;
&lt;/pre&gt;&lt;/div&gt;
&lt;/div&gt;



&lt;p&gt;&lt;code&gt;array.delete_if {|element| block}&lt;/code&gt; iterates over all elements of
&lt;code&gt;array&lt;/code&gt; and deletes an &lt;code&gt;element&lt;/code&gt; from &lt;code&gt;array&lt;/code&gt; if &lt;code&gt;block&lt;/code&gt; returns &lt;code&gt;true&lt;/code&gt; for that
element.&lt;/p&gt;

	&lt;h3&gt;Examples&lt;/h3&gt;




&lt;table class="CodeRay"&gt;&lt;tr&gt;
  &lt;td class="line_numbers" title="click to toggle" onclick="with (this.firstChild.style) { display = (display == '') ? 'none' : '' }"&gt;&lt;pre&gt;1&lt;tt&gt;
&lt;/tt&gt;2&lt;tt&gt;
&lt;/tt&gt;3&lt;tt&gt;
&lt;/tt&gt;&lt;/pre&gt;&lt;/td&gt;
  &lt;td class="code"&gt;&lt;pre ondblclick="with (this.style) { overflow = (overflow == 'auto' || overflow == '') ? 'visible' : 'auto' }"&gt;a = [&lt;span class="i"&gt;1&lt;/span&gt;,&lt;span class="i"&gt;2&lt;/span&gt;,&lt;span class="i"&gt;3&lt;/span&gt;,&lt;span class="i"&gt;4&lt;/span&gt;,&lt;span class="i"&gt;5&lt;/span&gt;,&lt;span class="i"&gt;6&lt;/span&gt;,&lt;span class="i"&gt;7&lt;/span&gt;,&lt;span class="i"&gt;8&lt;/span&gt;,&lt;span class="i"&gt;9&lt;/span&gt;,&lt;span class="i"&gt;10&lt;/span&gt;]    &lt;span class="c"&gt;#=&amp;gt; [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]&lt;/span&gt;&lt;tt&gt;
&lt;/tt&gt;a.delete_if {|n| n % &lt;span class="i"&gt;2&lt;/span&gt; == &lt;span class="i"&gt;0&lt;/span&gt;}  &lt;span class="c"&gt;#=&amp;gt; [1, 3, 5, 7, 9]&lt;/span&gt;&lt;tt&gt;
&lt;/tt&gt;a                             &lt;span class="c"&gt;#=&amp;gt; [1, 3, 5, 7, 9]&lt;/span&gt;&lt;tt&gt;
&lt;/tt&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;&lt;/table&gt;



	&lt;p&gt;The following is another usage example.&lt;/p&gt;


&lt;table class="CodeRay"&gt;&lt;tr&gt;
  &lt;td class="line_numbers" title="click to toggle" onclick="with (this.firstChild.style) { display = (display == '') ? 'none' : '' }"&gt;&lt;pre&gt;1&lt;tt&gt;
&lt;/tt&gt;2&lt;tt&gt;
&lt;/tt&gt;3&lt;tt&gt;
&lt;/tt&gt;4&lt;tt&gt;
&lt;/tt&gt;5&lt;tt&gt;
&lt;/tt&gt;6&lt;tt&gt;
&lt;/tt&gt;7&lt;tt&gt;
&lt;/tt&gt;8&lt;tt&gt;
&lt;/tt&gt;9&lt;tt&gt;
&lt;/tt&gt;&lt;strong&gt;10&lt;/strong&gt;&lt;tt&gt;
&lt;/tt&gt;11&lt;tt&gt;
&lt;/tt&gt;12&lt;tt&gt;
&lt;/tt&gt;13&lt;tt&gt;
&lt;/tt&gt;14&lt;tt&gt;
&lt;/tt&gt;15&lt;tt&gt;
&lt;/tt&gt;16&lt;tt&gt;
&lt;/tt&gt;17&lt;tt&gt;
&lt;/tt&gt;18&lt;tt&gt;
&lt;/tt&gt;19&lt;tt&gt;
&lt;/tt&gt;&lt;strong&gt;20&lt;/strong&gt;&lt;tt&gt;
&lt;/tt&gt;21&lt;tt&gt;
&lt;/tt&gt;22&lt;tt&gt;
&lt;/tt&gt;23&lt;tt&gt;
&lt;/tt&gt;24&lt;tt&gt;
&lt;/tt&gt;25&lt;tt&gt;
&lt;/tt&gt;26&lt;tt&gt;
&lt;/tt&gt;27&lt;tt&gt;
&lt;/tt&gt;28&lt;tt&gt;
&lt;/tt&gt;29&lt;tt&gt;
&lt;/tt&gt;&lt;strong&gt;30&lt;/strong&gt;&lt;tt&gt;
&lt;/tt&gt;31&lt;tt&gt;
&lt;/tt&gt;32&lt;tt&gt;
&lt;/tt&gt;33&lt;tt&gt;
&lt;/tt&gt;34&lt;tt&gt;
&lt;/tt&gt;35&lt;tt&gt;
&lt;/tt&gt;36&lt;tt&gt;
&lt;/tt&gt;37&lt;tt&gt;
&lt;/tt&gt;38&lt;tt&gt;
&lt;/tt&gt;39&lt;tt&gt;
&lt;/tt&gt;&lt;strong&gt;40&lt;/strong&gt;&lt;tt&gt;
&lt;/tt&gt;41&lt;tt&gt;
&lt;/tt&gt;42&lt;tt&gt;
&lt;/tt&gt;43&lt;tt&gt;
&lt;/tt&gt;44&lt;tt&gt;
&lt;/tt&gt;45&lt;tt&gt;
&lt;/tt&gt;46&lt;tt&gt;
&lt;/tt&gt;&lt;/pre&gt;&lt;/td&gt;
  &lt;td class="code"&gt;&lt;pre ondblclick="with (this.style) { overflow = (overflow == 'auto' || overflow == '') ? 'visible' : 'auto' }"&gt;&lt;span class="c"&gt;#!/usr/bin/env ruby&lt;/span&gt;&lt;tt&gt;
&lt;/tt&gt;&lt;span class="c"&gt;#&lt;/span&gt;&lt;tt&gt;
&lt;/tt&gt;&lt;span class="c"&gt;# A contrived example of using Array.delete_if&lt;/span&gt;&lt;tt&gt;
&lt;/tt&gt;&lt;span class="c"&gt;#&lt;/span&gt;&lt;tt&gt;
&lt;/tt&gt;&lt;tt&gt;
&lt;/tt&gt;&lt;span class="gv"&gt;$VERBOSE&lt;/span&gt; = &lt;span class="pc"&gt;true&lt;/span&gt;&lt;tt&gt;
&lt;/tt&gt;&lt;tt&gt;
&lt;/tt&gt;require &lt;span class="s"&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="k"&gt;pp&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;/span&gt;&lt;tt&gt;
&lt;/tt&gt;&lt;tt&gt;
&lt;/tt&gt;&lt;span class="c"&gt;# Member of an organization.&lt;/span&gt;&lt;tt&gt;
&lt;/tt&gt;&lt;span class="r"&gt;class&lt;/span&gt; &lt;span class="cl"&gt;Member&lt;/span&gt;&lt;tt&gt;
&lt;/tt&gt;  attr_accessor &lt;span class="sy"&gt;:name&lt;/span&gt;&lt;tt&gt;
&lt;/tt&gt;  attr_accessor &lt;span class="sy"&gt;:current&lt;/span&gt;&lt;tt&gt;
&lt;/tt&gt;  &lt;span class="r"&gt;def&lt;/span&gt; &lt;span class="fu"&gt;current?&lt;/span&gt;&lt;tt&gt;
&lt;/tt&gt;    &lt;span class="iv"&gt;@current&lt;/span&gt;&lt;tt&gt;
&lt;/tt&gt;  &lt;span class="r"&gt;end&lt;/span&gt;&lt;tt&gt;
&lt;/tt&gt;&lt;span class="r"&gt;end&lt;/span&gt;&lt;tt&gt;
&lt;/tt&gt;&lt;tt&gt;
&lt;/tt&gt;&lt;tt&gt;
&lt;/tt&gt;&lt;span class="c"&gt;# Raw member data&lt;/span&gt;&lt;tt&gt;
&lt;/tt&gt;members_data = [&lt;tt&gt;
&lt;/tt&gt;  [&lt;span class="s"&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="k"&gt;Bob&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;/span&gt;, &lt;span class="pc"&gt;true&lt;/span&gt;],&lt;tt&gt;
&lt;/tt&gt;  [&lt;span class="s"&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="k"&gt;Fred&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;/span&gt;, &lt;span class="pc"&gt;false&lt;/span&gt;],&lt;tt&gt;
&lt;/tt&gt;  [&lt;span class="s"&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="k"&gt;Bill&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;/span&gt;, &lt;span class="pc"&gt;false&lt;/span&gt;],&lt;tt&gt;
&lt;/tt&gt;  [&lt;span class="s"&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="k"&gt;Alice&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;/span&gt;, &lt;span class="pc"&gt;true&lt;/span&gt;]&lt;tt&gt;
&lt;/tt&gt;]&lt;tt&gt;
&lt;/tt&gt;&lt;tt&gt;
&lt;/tt&gt;&lt;span class="c"&gt;# Create the members based on the raw member data&lt;/span&gt;&lt;tt&gt;
&lt;/tt&gt;members = members_data.map &lt;span class="r"&gt;do&lt;/span&gt; |entry|&lt;tt&gt;
&lt;/tt&gt;  member = &lt;span class="co"&gt;Member&lt;/span&gt;.new&lt;tt&gt;
&lt;/tt&gt;  member.name = entry[&lt;span class="i"&gt;0&lt;/span&gt;]&lt;tt&gt;
&lt;/tt&gt;  member.current = entry[&lt;span class="i"&gt;1&lt;/span&gt;]&lt;tt&gt;
&lt;/tt&gt;  member&lt;tt&gt;
&lt;/tt&gt;&lt;span class="r"&gt;end&lt;/span&gt;&lt;tt&gt;
&lt;/tt&gt;&lt;tt&gt;
&lt;/tt&gt;puts &lt;span class="s"&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="k"&gt;Before purging of non-current members...&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;/span&gt;&lt;tt&gt;
&lt;/tt&gt;pp members&lt;tt&gt;
&lt;/tt&gt;puts &lt;span class="s"&gt;&lt;span class="dl"&gt;&amp;quot;&lt;/span&gt;&lt;span class="ch"&gt;\n&lt;/span&gt;&lt;span class="dl"&gt;&amp;quot;&lt;/span&gt;&lt;/span&gt;&lt;tt&gt;
&lt;/tt&gt;&lt;tt&gt;
&lt;/tt&gt;&lt;span class="c"&gt;# Purge non-current members.&lt;/span&gt;&lt;tt&gt;
&lt;/tt&gt;members.delete_if {|member| !member.current?}&lt;tt&gt;
&lt;/tt&gt;&lt;tt&gt;
&lt;/tt&gt;puts &lt;span class="s"&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="k"&gt;After purging of non-current members...&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;/span&gt;&lt;tt&gt;
&lt;/tt&gt;pp members&lt;tt&gt;
&lt;/tt&gt;&lt;tt&gt;
&lt;/tt&gt;&lt;tt&gt;
&lt;/tt&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;&lt;/table&gt;

&lt;p&gt;Produces&amp;#8230;&lt;/p&gt;

&lt;div class="CodeRay"&gt;
  &lt;div class="code"&gt;&lt;pre&gt;Before purging of non-current members...
[#&amp;lt;Member:0x87780 @current=true, @name=&amp;quot;Bob&amp;quot;&amp;gt;,
 #&amp;lt;Member:0x877a8 @current=false, @name=&amp;quot;Fred&amp;quot;&amp;gt;,
 #&amp;lt;Member:0x87794 @current=false, @name=&amp;quot;Bill&amp;quot;&amp;gt;,
 #&amp;lt;Member:0x8776c @current=true, @name=&amp;quot;Alice&amp;quot;&amp;gt;]

After purging of non-current members...
[#&amp;lt;Member:0x87780 @current=true, @name=&amp;quot;Bob&amp;quot;&amp;gt;,
 #&amp;lt;Member:0x8776c @current=true, @name=&amp;quot;Alice&amp;quot;&amp;gt;]
&lt;/pre&gt;&lt;/div&gt;
&lt;/div&gt;


	&lt;h3&gt;Documentation Reference&lt;/h3&gt;


	&lt;p&gt;Ruby version 1.8.6&lt;/p&gt;


	&lt;p&gt;&lt;a href="http://www.ruby-doc.org"&gt;www.ruby-doc.org&lt;/a&gt; : &lt;a href="http://www.ruby-doc.org/core/classes/Array.html#M002218"&gt;Array.delete_if&lt;/a&gt;&lt;/p&gt;


</description>
      <pubDate>Wed, 14 Nov 2007 00:01:00 -0600</pubDate>
      <guid isPermaLink="false">urn:uuid:c3ae3467-4596-4f3a-a549-341832813f9f</guid>
      <author>Kelly McCauley</author>
      <link>http://drotner.org/articles/2007/11/14/ruby-method-of-the-day-array-delete-if</link>
      <category>Ruby Method of the Day</category>
      <category>Programming</category>
      <category>ruby</category>
      <category>rmotd</category>
      <trackback:ping>http://drotner.org/articles/trackback/70</trackback:ping>
    </item>
    <item>
      <title>Ruby Method of the Day - Array.delete</title>
      <description>&lt;h3&gt;Signature&lt;/h3&gt;




&lt;div class="CodeRay"&gt;
  &lt;div class="code"&gt;&lt;pre&gt;array.delete(object)                &lt;span class="c"&gt;#=&amp;gt; object or nil&lt;/span&gt;
array.delete(object) {|o| block }   &lt;span class="c"&gt;#=&amp;gt; object or returned_block_result&lt;/span&gt;
&lt;/pre&gt;&lt;/div&gt;
&lt;/div&gt;



&lt;p&gt;&lt;code&gt;array.delete(object)&lt;/code&gt; removes all occurances of &lt;code&gt;object&lt;/code&gt; from &lt;code&gt;array&lt;/code&gt; and
returns &lt;code&gt;object&lt;/code&gt; if &lt;code&gt;object&lt;/code&gt; is found in &lt;code&gt;array&lt;/code&gt; or it returns &lt;code&gt;nil&lt;/code&gt; if
&lt;code&gt;object&lt;/code&gt; is not found in &lt;code&gt;array&lt;/code&gt;.  If &lt;code&gt;block&lt;/code&gt; is given and &lt;code&gt;object&lt;/code&gt; is not
found in &lt;code&gt;array&lt;/code&gt; then the the &lt;code&gt;block&lt;/code&gt;&amp;#8217;s returned results is returned
by &lt;code&gt;array.delete&lt;/code&gt;.&lt;/p&gt;

	&lt;h3&gt;Examples&lt;/h3&gt;




&lt;table class="CodeRay"&gt;&lt;tr&gt;
  &lt;td class="line_numbers" title="click to toggle" onclick="with (this.firstChild.style) { display = (display == '') ? 'none' : '' }"&gt;&lt;pre&gt;1&lt;tt&gt;
&lt;/tt&gt;2&lt;tt&gt;
&lt;/tt&gt;3&lt;tt&gt;
&lt;/tt&gt;4&lt;tt&gt;
&lt;/tt&gt;5&lt;tt&gt;
&lt;/tt&gt;6&lt;tt&gt;
&lt;/tt&gt;7&lt;tt&gt;
&lt;/tt&gt;8&lt;tt&gt;
&lt;/tt&gt;9&lt;tt&gt;
&lt;/tt&gt;&lt;strong&gt;10&lt;/strong&gt;&lt;tt&gt;
&lt;/tt&gt;11&lt;tt&gt;
&lt;/tt&gt;12&lt;tt&gt;
&lt;/tt&gt;13&lt;tt&gt;
&lt;/tt&gt;14&lt;tt&gt;
&lt;/tt&gt;15&lt;tt&gt;
&lt;/tt&gt;&lt;/pre&gt;&lt;/td&gt;
  &lt;td class="code"&gt;&lt;pre ondblclick="with (this.style) { overflow = (overflow == 'auto' || overflow == '') ? 'visible' : 'auto' }"&gt;a = [&lt;span class="i"&gt;1&lt;/span&gt;,&lt;span class="i"&gt;2&lt;/span&gt;,&lt;span class="i"&gt;3&lt;/span&gt;,&lt;span class="i"&gt;4&lt;/span&gt;,&lt;span class="i"&gt;5&lt;/span&gt;,&lt;span class="i"&gt;6&lt;/span&gt;,&lt;span class="i"&gt;7&lt;/span&gt;]       &lt;span class="c"&gt;#=&amp;gt; [1, 2, 3, 4, 5, 6, 7]&lt;/span&gt;&lt;tt&gt;
&lt;/tt&gt;a.delete(&lt;span class="i"&gt;7&lt;/span&gt;)               &lt;span class="c"&gt;#=&amp;gt; 7&lt;/span&gt;&lt;tt&gt;
&lt;/tt&gt;a                         &lt;span class="c"&gt;#=&amp;gt; [1, 2, 3, 4, 5, 6]&lt;/span&gt;&lt;tt&gt;
&lt;/tt&gt;a.delete(&lt;span class="s"&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="k"&gt;foo&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;/span&gt;)           &lt;span class="c"&gt;#=&amp;gt; nil&lt;/span&gt;&lt;tt&gt;
&lt;/tt&gt;&lt;tt&gt;
&lt;/tt&gt;a = [&lt;span class="i"&gt;7&lt;/span&gt;,&lt;span class="i"&gt;1&lt;/span&gt;,&lt;span class="i"&gt;2&lt;/span&gt;,&lt;span class="i"&gt;3&lt;/span&gt;,&lt;span class="i"&gt;7&lt;/span&gt;,&lt;span class="i"&gt;4&lt;/span&gt;,&lt;span class="i"&gt;5&lt;/span&gt;,&lt;span class="i"&gt;6&lt;/span&gt;,&lt;span class="i"&gt;7&lt;/span&gt;]   &lt;span class="c"&gt;#=&amp;gt; [7, 1, 2, 3, 7, 4, 5, 6, 7]&lt;/span&gt;&lt;tt&gt;
&lt;/tt&gt;a.delete(&lt;span class="i"&gt;7&lt;/span&gt;)               &lt;span class="c"&gt;#=&amp;gt; 7&lt;/span&gt;&lt;tt&gt;
&lt;/tt&gt;a                         &lt;span class="c"&gt;#=&amp;gt; [1, 2, 3, 4, 5, 6]&lt;/span&gt;&lt;tt&gt;
&lt;/tt&gt;&lt;tt&gt;
&lt;/tt&gt;a.delete(&lt;span class="s"&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="k"&gt;foo&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;/span&gt;) {&lt;span class="pc"&gt;false&lt;/span&gt;}   &lt;span class="c"&gt;#=&amp;gt; false&lt;/span&gt;&lt;tt&gt;
&lt;/tt&gt;&lt;tt&gt;
&lt;/tt&gt;a.delete(&lt;span class="s"&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="k"&gt;foo&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;/span&gt;) &lt;span class="r"&gt;do&lt;/span&gt; |item|&lt;tt&gt;
&lt;/tt&gt;  &lt;span class="s"&gt;&lt;span class="dl"&gt;&amp;quot;&lt;/span&gt;&lt;span class="k"&gt;'&lt;/span&gt;&lt;span class="il"&gt;&lt;span class="idl"&gt;#{&lt;/span&gt;item&lt;span class="idl"&gt;}&lt;/span&gt;&lt;/span&gt;&lt;span class="k"&gt;' not found&lt;/span&gt;&lt;span class="dl"&gt;&amp;quot;&lt;/span&gt;&lt;/span&gt;&lt;tt&gt;
&lt;/tt&gt;&lt;span class="r"&gt;end&lt;/span&gt;                       &lt;span class="c"&gt;#=&amp;gt; &amp;quot;'foo' not found&amp;quot;&lt;/span&gt;&lt;tt&gt;
&lt;/tt&gt;&lt;tt&gt;
&lt;/tt&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;&lt;/table&gt;



	&lt;h3&gt;Documentation Reference&lt;/h3&gt;


	&lt;p&gt;Ruby version 1.8.6&lt;/p&gt;


	&lt;p&gt;&lt;a href="http://www.ruby-doc.org"&gt;www.ruby-doc.org&lt;/a&gt; : &lt;a href="http://www.ruby-doc.org/core/classes/Array.html#M002216"&gt;Array.delete&lt;/a&gt;&lt;/p&gt;


</description>
      <pubDate>Tue, 13 Nov 2007 00:01:00 -0600</pubDate>
      <guid isPermaLink="false">urn:uuid:89422d9d-04bf-4064-b2af-a76d5faea748</guid>
      <author>Kelly McCauley</author>
      <link>http://drotner.org/articles/2007/11/13/ruby-method-of-the-day-array-delete</link>
      <category>Ruby Method of the Day</category>
      <category>Programming</category>
      <category>ruby</category>
      <category>rmotd</category>
      <trackback:ping>http://drotner.org/articles/trackback/69</trackback:ping>
    </item>
    <item>
      <title>Ruby Method of the Day - Array.compact and Array.compact!</title>
      <description>&lt;h3&gt;Signature&lt;/h3&gt;




&lt;div class="CodeRay"&gt;
  &lt;div class="code"&gt;&lt;pre&gt;array.compact   &lt;span class="c"&gt;#=&amp;gt; new_array&lt;/span&gt;
array.compact!  &lt;span class="c"&gt;#=&amp;gt; array or nil&lt;/span&gt;
&lt;/pre&gt;&lt;/div&gt;
&lt;/div&gt;



&lt;p&gt;&lt;code&gt;array.compact&lt;/code&gt; returns &lt;code&gt;new_array&lt;/code&gt; that contains all non-&lt;code&gt;nil&lt;/code&gt;
elements in &lt;code&gt;array&lt;/code&gt; (&lt;code&gt;nil&lt;/code&gt; elements removed).  &lt;code&gt;array.compact!&lt;/code&gt; either returns
&lt;code&gt;array&lt;/code&gt; with all &lt;code&gt;nil&lt;/code&gt; elements removed or returns &lt;code&gt;nil&lt;/code&gt; if no &lt;code&gt;nil&lt;/code&gt;
elements were removed.&lt;/p&gt;

	&lt;h3&gt;Examples&lt;/h3&gt;




&lt;table class="CodeRay"&gt;&lt;tr&gt;
  &lt;td class="line_numbers" title="click to toggle" onclick="with (this.firstChild.style) { display = (display == '') ? 'none' : '' }"&gt;&lt;pre&gt;1&lt;tt&gt;
&lt;/tt&gt;2&lt;tt&gt;
&lt;/tt&gt;3&lt;tt&gt;
&lt;/tt&gt;4&lt;tt&gt;
&lt;/tt&gt;5&lt;tt&gt;
&lt;/tt&gt;6&lt;tt&gt;
&lt;/tt&gt;&lt;/pre&gt;&lt;/td&gt;
  &lt;td class="code"&gt;&lt;pre ondblclick="with (this.style) { overflow = (overflow == 'auto' || overflow == '') ? 'visible' : 'auto' }"&gt;a = [&lt;span class="i"&gt;1&lt;/span&gt;, &lt;span class="pc"&gt;nil&lt;/span&gt;, &lt;span class="pc"&gt;nil&lt;/span&gt;, &lt;span class="i"&gt;4&lt;/span&gt;, &lt;span class="pc"&gt;nil&lt;/span&gt;]       &lt;span class="c"&gt;#=&amp;gt; [1, nil, nil, 4, nil]&lt;/span&gt;&lt;tt&gt;
&lt;/tt&gt;a.compact                       &lt;span class="c"&gt;#=&amp;gt; [1, 4]&lt;/span&gt;&lt;tt&gt;
&lt;/tt&gt;a                               &lt;span class="c"&gt;#=&amp;gt; [1, nil, nil, 4, nil]&lt;/span&gt;&lt;tt&gt;
&lt;/tt&gt;a.compact!                      &lt;span class="c"&gt;#=&amp;gt; [1, 4]&lt;/span&gt;&lt;tt&gt;
&lt;/tt&gt;a                               &lt;span class="c"&gt;#=&amp;gt; [1, 4]&lt;/span&gt;&lt;tt&gt;
&lt;/tt&gt;a.compact!                      &lt;span class="c"&gt;#=&amp;gt; nil&lt;/span&gt;&lt;tt&gt;
&lt;/tt&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;&lt;/table&gt;



	&lt;h3&gt;Documentation Reference&lt;/h3&gt;


	&lt;p&gt;Ruby version 1.8.6&lt;/p&gt;


	&lt;p&gt;&lt;a href="http://www.ruby-doc.org"&gt;www.ruby-doc.org&lt;/a&gt; : &lt;a href="http://www.ruby-doc.org/core/classes/Array.html#M002239"&gt;Array.compact&lt;/a&gt;, &lt;a href="http://www.ruby-doc.org/core/classes/Array.html#M002240"&gt;Array.compact!&lt;/a&gt;&lt;/p&gt;


</description>
      <pubDate>Mon, 12 Nov 2007 00:01:00 -0600</pubDate>
      <guid isPermaLink="false">urn:uuid:4b468dcf-d320-4602-b0f8-8516042fa23c</guid>
      <author>Kelly McCauley</author>
      <link>http://drotner.org/articles/2007/11/12/ruby-method-of-the-day-array-compact</link>
      <category>Ruby Method of the Day</category>
      <category>Programming</category>
      <category>ruby</category>
      <category>rmotd</category>
    </item>
    <item>
      <title>Ruby Method of the Day - Array.pop</title>
      <description>&lt;h3&gt;Signature&lt;/h3&gt;




&lt;div class="CodeRay"&gt;
  &lt;div class="code"&gt;&lt;pre&gt;array.pop   &lt;span class="c"&gt;#=&amp;gt; object or nil&lt;/span&gt;
&lt;/pre&gt;&lt;/div&gt;
&lt;/div&gt;



&lt;p&gt;&lt;code&gt;array.pop&lt;/code&gt; removes and returns the last object from &lt;code&gt;array&lt;/code&gt;.  &lt;code&gt;nil&lt;/code&gt; is
returned if &lt;code&gt;array&lt;/code&gt; is empty (which is not a good test for an empty array since
the last object of the array could itself be &lt;code&gt;nil&lt;/code&gt;).&lt;/p&gt;

	&lt;h3&gt;Examples&lt;/h3&gt;




&lt;table class="CodeRay"&gt;&lt;tr&gt;
  &lt;td class="line_numbers" title="click to toggle" onclick="with (this.firstChild.style) { display = (display == '') ? 'none' : '' }"&gt;&lt;pre&gt;1&lt;tt&gt;
&lt;/tt&gt;2&lt;tt&gt;
&lt;/tt&gt;3&lt;tt&gt;
&lt;/tt&gt;4&lt;tt&gt;
&lt;/tt&gt;5&lt;tt&gt;
&lt;/tt&gt;6&lt;tt&gt;
&lt;/tt&gt;7&lt;tt&gt;
&lt;/tt&gt;&lt;/pre&gt;&lt;/td&gt;
  &lt;td class="code"&gt;&lt;pre ondblclick="with (this.style) { overflow = (overflow == 'auto' || overflow == '') ? 'visible' : 'auto' }"&gt;stack = []&lt;tt&gt;
&lt;/tt&gt;stack.pop           &lt;span class="c"&gt;#=&amp;gt; nil&lt;/span&gt;&lt;tt&gt;
&lt;/tt&gt;stack.push(&lt;span class="i"&gt;1&lt;/span&gt;,&lt;span class="i"&gt;2&lt;/span&gt;,&lt;span class="i"&gt;3&lt;/span&gt;)   &lt;span class="c"&gt;#=&amp;gt; [1, 2, 3]&lt;/span&gt;&lt;tt&gt;
&lt;/tt&gt;stack.pop           &lt;span class="c"&gt;#=&amp;gt; 3&lt;/span&gt;&lt;tt&gt;
&lt;/tt&gt;stack               &lt;span class="c"&gt;#=&amp;gt; [1, 2]&lt;/span&gt;&lt;tt&gt;
&lt;/tt&gt;stack.push(&lt;span class="pc"&gt;nil&lt;/span&gt;)     &lt;span class="c"&gt;#=&amp;gt; [1, 2, nil]&lt;/span&gt;&lt;tt&gt;
&lt;/tt&gt;stack.pop           &lt;span class="c"&gt;#=&amp;gt; nil&lt;/span&gt;&lt;tt&gt;
&lt;/tt&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;&lt;/table&gt;



	&lt;h3&gt;Documentation Reference&lt;/h3&gt;


	&lt;p&gt;Ruby version 1.8.6&lt;/p&gt;


	&lt;p&gt;&lt;a href="http://www.ruby-doc.org"&gt;www.ruby-doc.org&lt;/a&gt; : &lt;a href="http://www.ruby-doc.org/core/classes/Array.html#M002192"&gt;Array.pop&lt;/a&gt;&lt;/p&gt;


</description>
      <pubDate>Fri, 09 Nov 2007 00:01:00 -0600</pubDate>
      <guid isPermaLink="false">urn:uuid:c27abb8a-f182-4410-a064-e2062b5ab3df</guid>
      <author>Kelly McCauley</author>
      <link>http://drotner.org/articles/2007/11/09/ruby-method-of-the-day-array-pop</link>
      <category>Ruby Method of the Day</category>
      <category>Programming</category>
      <category>ruby</category>
      <category>rmotd</category>
    </item>
    <item>
      <title>Ruby Method of the Day - Array.nitems</title>
      <description>&lt;h3&gt;Signature&lt;/h3&gt;




&lt;div class="CodeRay"&gt;
  &lt;div class="code"&gt;&lt;pre&gt;array.nitems    &lt;span class="c"&gt;#=&amp;gt; integer&lt;/span&gt;
&lt;/pre&gt;&lt;/div&gt;
&lt;/div&gt;



&lt;p&gt;&lt;code&gt;array.nitems&lt;/code&gt; returns the number of non-&lt;code&gt;nil&lt;/code&gt; elements contained
in &lt;code&gt;array&lt;/code&gt;.&lt;/p&gt;

	&lt;h3&gt;Examples&lt;/h3&gt;




&lt;table class="CodeRay"&gt;&lt;tr&gt;
  &lt;td class="line_numbers" title="click to toggle" onclick="with (this.firstChild.style) { display = (display == '') ? 'none' : '' }"&gt;&lt;pre&gt;1&lt;tt&gt;
&lt;/tt&gt;2&lt;tt&gt;
&lt;/tt&gt;3&lt;tt&gt;
&lt;/tt&gt;4&lt;tt&gt;
&lt;/tt&gt;5&lt;tt&gt;
&lt;/tt&gt;6&lt;tt&gt;
&lt;/tt&gt;&lt;/pre&gt;&lt;/td&gt;
  &lt;td class="code"&gt;&lt;pre ondblclick="with (this.style) { overflow = (overflow == 'auto' || overflow == '') ? 'visible' : 'auto' }"&gt;a = [&lt;span class="i"&gt;1&lt;/span&gt;, &lt;span class="i"&gt;2&lt;/span&gt;, &lt;span class="i"&gt;3&lt;/span&gt;, &lt;span class="i"&gt;4&lt;/span&gt;, &lt;span class="i"&gt;5&lt;/span&gt;]&lt;tt&gt;
&lt;/tt&gt;a.nitems                    &lt;span class="c"&gt;#=&amp;gt; 5&lt;/span&gt;&lt;tt&gt;
&lt;/tt&gt;a = [&lt;span class="i"&gt;1&lt;/span&gt;, &lt;span class="pc"&gt;nil&lt;/span&gt;, &lt;span class="pc"&gt;nil&lt;/span&gt;, &lt;span class="i"&gt;4&lt;/span&gt;, &lt;span class="pc"&gt;nil&lt;/span&gt;]&lt;tt&gt;
&lt;/tt&gt;a.nitems                    &lt;span class="c"&gt;#=&amp;gt; 2&lt;/span&gt;&lt;tt&gt;
&lt;/tt&gt;a = [&lt;span class="pc"&gt;nil&lt;/span&gt;, &lt;span class="pc"&gt;nil&lt;/span&gt;, &lt;span class="pc"&gt;nil&lt;/span&gt;, &lt;span class="pc"&gt;nil&lt;/span&gt;]&lt;tt&gt;
&lt;/tt&gt;a.nitems                    &lt;span class="c"&gt;#=&amp;gt; 0&lt;/span&gt;&lt;tt&gt;
&lt;/tt&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;/tr&gt;&lt;/table&gt;



	&lt;h3&gt;Documentation Reference&lt;/h3&gt;


	&lt;p&gt;Ruby version 1.8.6&lt;/p&gt;


	&lt;p&gt;&lt;a href="http://www.ruby-doc.org"&gt;www.ruby-doc.org&lt;/a&gt; : &lt;a href="http://www.ruby-doc.org/core/classes/Array.html#M002243"&gt;Array.nitems&lt;/a&gt;&lt;/p&gt;


</description>
      <pubDate>Thu, 08 Nov 2007 00:01:00 -0600</pubDate>
      <guid isPermaLink="false">urn:uuid:4da63d8a-f0e7-407e-9b71-88c05d3b3ab6</guid>
      <author>Kelly McCauley</author>
      <link>http://drotner.org/articles/2007/11/08/ruby-method-of-the-day-array-nitems</link>
      <category>Ruby Method of the Day</category>
      <category>Programming</category>
      <category>ruby</category>
      <category>rmotd</category>
    </item>
  </channel>
</rss>
