<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0">
  <channel>
    <title>p_next</title>
    <link>https://ruby-china.org/p_next</link>
    <description/>
    <language>en-us</language>
    <item>
      <title>RubyMine 跳转到方法定义的快捷键是？&amp;&amp;怎么调试着看框架源码？</title>
      <description>&lt;p&gt;在 RubyMine 下看源码，不知道怎么跳转到方法定义，只能搜索。在 Google 上找了一下没有发现正确答案，请大侠告诉一声。&lt;/p&gt;

&lt;p&gt;另外想看 Sinatra 的代码，因为它比较短，但是看着静态的代码想找个入口都挺麻烦。想问问大侠怎么调试呢？给个思路就行，完了我自己 Google 去。&lt;/p&gt;

&lt;p&gt;感觉问一下的话再去搜索更有针对性，谢谢啊！&lt;/p&gt;</description>
      <author>p_next</author>
      <pubDate>Fri, 02 Aug 2013 11:12:33 +0800</pubDate>
      <link>https://ruby-china.org/topics/13000</link>
      <guid>https://ruby-china.org/topics/13000</guid>
    </item>
    <item>
      <title>求教 ruby 编程语言一书中关于函数式编程的问题</title>
      <description>&lt;pre class="highlight plaintext"&gt;&lt;code&gt;module Func
  # 如此调用
  # a = [[1, 2], [3, 4]]
  # sum = lambda { |x, y| x + y }
  # sums = sum|a  # =&amp;gt; [3, 7]
  def apply(enum)
    enum.map &amp;amp;self
  end

  alias | apply
end

class Proc; include Func; end
class Method; include Func; end
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;请问：1、enum.map &amp;amp;self 这句话怎么理解？self 按书上调用例子看应该是一个 lambda，那么&amp;amp;self 是个什么意思？
2、&lt;code&gt;sum|a&lt;/code&gt;是什么意思？
3、&lt;code&gt;|&lt;/code&gt;是一个方法名称，那么调用它的时候应该是 &lt;code&gt;接受者.|(args)&lt;/code&gt;，为何把&lt;code&gt;.&lt;/code&gt;给省略了？&lt;/p&gt;

&lt;p&gt;quite confusing.
谢谢大家！！       &lt;/p&gt;</description>
      <author>p_next</author>
      <pubDate>Tue, 23 Jul 2013 17:03:40 +0800</pubDate>
      <link>https://ruby-china.org/topics/12713</link>
      <guid>https://ruby-china.org/topics/12713</guid>
    </item>
    <item>
      <title>用 class_eval 定义方法问题</title>
      <description>&lt;pre class="highlight ruby"&gt;&lt;code&gt;&lt;span class="k"&gt;class&lt;/span&gt; &lt;span class="nc"&gt;Module&lt;/span&gt;
  &lt;span class="kp"&gt;private&lt;/span&gt;
  &lt;span class="c1"&gt;# Generate a string of code to define attr reader methods.&lt;/span&gt;
  &lt;span class="k"&gt;def&lt;/span&gt; &lt;span class="nf"&gt;readonly&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="o"&gt;*&lt;/span&gt;&lt;span class="n"&gt;syms&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
    &lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="k"&gt;if&lt;/span&gt; &lt;span class="n"&gt;syms&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;size&lt;/span&gt; &lt;span class="o"&gt;==&lt;/span&gt; &lt;span class="mi"&gt;0&lt;/span&gt;
    &lt;span class="n"&gt;code&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="s2"&gt;""&lt;/span&gt;

    &lt;span class="n"&gt;syms&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;each&lt;/span&gt; &lt;span class="k"&gt;do&lt;/span&gt; &lt;span class="o"&gt;|&lt;/span&gt;&lt;span class="n"&gt;s&lt;/span&gt;&lt;span class="o"&gt;|&lt;/span&gt;
      &lt;span class="n"&gt;code&lt;/span&gt; &lt;span class="o"&gt;&amp;lt;&amp;lt;&lt;/span&gt; &lt;span class="s2"&gt;"def &lt;/span&gt;&lt;span class="si"&gt;#{&lt;/span&gt;&lt;span class="n"&gt;s&lt;/span&gt;&lt;span class="si"&gt;}&lt;/span&gt;&lt;span class="s2"&gt;; @&lt;/span&gt;&lt;span class="si"&gt;#{&lt;/span&gt;&lt;span class="n"&gt;s&lt;/span&gt;&lt;span class="si"&gt;}&lt;/span&gt;&lt;span class="s2"&gt;; end&lt;/span&gt;&lt;span class="se"&gt;\n&lt;/span&gt;&lt;span class="s2"&gt;"&lt;/span&gt;
    &lt;span class="k"&gt;end&lt;/span&gt;

    &lt;span class="c1"&gt;# Create instance methods.&lt;/span&gt;
    &lt;span class="nb"&gt;class_eval&lt;/span&gt; &lt;span class="n"&gt;code&lt;/span&gt;
  &lt;span class="k"&gt;end&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;这是《The Ruby Programming Language》上的 demo，我的问题是，class_eval 生成的方法如何调用，比如写了
&lt;code&gt;readonly :x&lt;/code&gt;
应该是会生成一个&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;x&lt;/span&gt;
  &lt;span class="vi"&gt;@x&lt;/span&gt;
&lt;span class="k"&gt;end&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;的方法
但是每次都报
&lt;code&gt;undefined method  ‘x' for #&amp;lt;Module:0x1fafd30&amp;gt; (NoMethodError)&lt;/code&gt;
错误&lt;/p&gt;

&lt;p&gt;这段代码到底怎么用呢？&lt;/p&gt;</description>
      <author>p_next</author>
      <pubDate>Fri, 05 Jul 2013 17:01:43 +0800</pubDate>
      <link>https://ruby-china.org/topics/12278</link>
      <guid>https://ruby-china.org/topics/12278</guid>
    </item>
    <item>
      <title>还是 ruby arrray delete 的问题</title>
      <description>&lt;p&gt;我写一个玩牌的小游戏，是两副牌的，所以会有两个♠3，而我想实现的功能是，每出一个♠3，就从记录所有牌的数组（这个数组形如：[♠3 ♠3 ♠4 ♠4,,,,,]）中删除这一个♠3。&lt;/p&gt;

&lt;p&gt;现在的问题是 delete 函数，如果元素重复，会全部删除。两♠3 都被删了！&lt;/p&gt;
&lt;h2 id="有什么办法删除第一个出现的元素么？"&gt;有什么办法删除第一个出现的元素么？&lt;/h2&gt;
&lt;p&gt;已经由&lt;a href="/blacktulip" class="user-mention" title="@blacktulip"&gt;&lt;i&gt;@&lt;/i&gt;blacktulip&lt;/a&gt;提出了解决方案：&lt;/p&gt;
&lt;h2 id="a.slice!(a.index(♠3))"&gt;a.slice!(a.index(♠3))&lt;/h2&gt;
&lt;p&gt;这样的确可行。但是又出现了新的问题：
(为了方便理解，我将 [♠3 ♠3 ♠4 ♠4..,,,,] 记为 [♠3A  ♠3B ♠4A ♠4B  ..,,,,])&lt;/p&gt;

&lt;p&gt;我用的是 a.each do |ele|
当用 a.slice!(a.index(♠3)) 删除掉♠3A 是，&lt;b&gt;&lt;strong&gt;这时的♠3B 会向前移动到♠3A 的位置&lt;/strong&gt;&lt;/b&gt;，
即
index:0_&lt;u&gt;1&lt;/u&gt;&lt;u&gt;2&lt;/u&gt;&lt;u&gt;3
[.......&lt;img title=":spades:" alt="♠" src="https://twemoji.ruby-china.com/2/svg/2660.svg" class="twemoji"&gt;3A  &lt;img title=":spades:" alt="♠" src="https://twemoji.ruby-china.com/2/svg/2660.svg" class="twemoji"&gt;3B    &lt;img title=":spades:" alt="♠" src="https://twemoji.ruby-china.com/2/svg/2660.svg" class="twemoji"&gt;4A   &lt;img title=":spades:" alt="♠" src="https://twemoji.ruby-china.com/2/svg/2660.svg" class="twemoji"&gt;4B  ..,,,,]
变成：
index:0&lt;/u&gt;&lt;u&gt;1&lt;/u&gt;_2&lt;br&gt;
[......♠3B  ♠4A   ♠4B  ..,,,,]
&lt;strong&gt;而迭代器却要向前移动一个，指向了 1 的位置，也就是♠4A&lt;/strong&gt;
这样 &lt;strong&gt;♠3B 就逃过了迭代器&lt;/strong&gt;
请问怎么能让迭代器从新向前移动一个，让♠3B 接受迭代？
另外，我能否认为，这一系列的问题都是由于使用内部迭代器而造成的？如果我使用外部迭代器是否更方便？&lt;/p&gt;</description>
      <author>p_next</author>
      <pubDate>Thu, 02 May 2013 01:27:11 +0800</pubDate>
      <link>https://ruby-china.org/topics/10642</link>
      <guid>https://ruby-china.org/topics/10642</guid>
    </item>
    <item>
      <title>ruby arrray delete 的问题</title>
      <description>&lt;p&gt;我写一个玩牌的小游戏，是两副牌的，所以会有两个♠3，而我想实现的功能是，每出一个♠3，就从记录所有牌的数组（这个数组形如：[♠3 ♠3 ♠4 ♠4,,,,,]）中删除这一个♠3。&lt;/p&gt;

&lt;p&gt;现在的问题是 delete 函数，如果元素重复，会全部删除。两♠3 都被删了！&lt;/p&gt;

&lt;p&gt;有什么办法删除第一个出现的元素么？&lt;/p&gt;

&lt;p&gt;Thank you!&lt;/p&gt;</description>
      <author>p_next</author>
      <pubDate>Thu, 02 May 2013 00:41:03 +0800</pubDate>
      <link>https://ruby-china.org/topics/10641</link>
      <guid>https://ruby-china.org/topics/10641</guid>
    </item>
  </channel>
</rss>
