<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0">
  <channel>
    <title>longjiangjiang (longjiangjiang)</title>
    <link>https://ruby-china.org/longjiangjiang</link>
    <description/>
    <language>en-us</language>
    <item>
      <title>关于参数传递和 `binding`, `eval`.</title>
      <description>&lt;p&gt;最近本人在刷 LeetCode，所选的语言是 ruby，刷到 86 题 partition list。&lt;/p&gt;

&lt;p&gt;小弟代码如下：&lt;/p&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;def append_list(head, tail, node, vars)
    if head.nil?
        eval "head = node", vars
        eval "tail = node", vars
        # head, tail = node, node
    else
        eval "tail.next = node", vars
        eval "tail = node", vars
        # tail.next = node
        # tail = node
    end
end


def partition(head, x)
    return head if head.nil? || head.next.nil?

    left, right = nil, nil

    while head &amp;amp;&amp;amp; head.val &amp;lt; x
        node = head
        head = head.next
        node.next = nil
        append_list(left, right, node, binding)
    end

    if head
        p = head
        while p.next
            if p.next.val &amp;lt; x
                node = p.next
                p.next = node.next
                node.next = nil
                append_list(left, right, node, binding)
            else
                p = p.next
            end
        end
    end

    append_list(left, right, node, binding)

    left
end
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;主要是 append_list 方法，因为 ruby 中参数传递的是拷贝，不是引用，所以查了下需要用 binding，但是小弟改了代码，使用了 eval 的形式，但是运行时却死循环了，所以想请教下各位大佬，哪里写错了。&lt;/p&gt;</description>
      <author>longjiangjiang</author>
      <pubDate>Fri, 21 Sep 2018 22:25:04 +0800</pubDate>
      <link>https://ruby-china.org/topics/37532</link>
      <guid>https://ruby-china.org/topics/37532</guid>
    </item>
  </channel>
</rss>
