<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0">
  <channel>
    <title>whatever0914 (whatever)</title>
    <link>https://ruby-china.org/whatever0914</link>
    <description/>
    <language>en-us</language>
    <item>
      <title>class_eval{} 与 class_eval do..end 有什么区别吗?</title>
      <description>&lt;p&gt;学写例子，发现以下一个问题，请帮忙看下。&lt;/p&gt;

&lt;p&gt;代码中通过 class_eval 来注入 getter 方法，如果写成 class_eval{code} 就无法正常执行，问题出在哪里呢？&lt;/p&gt;

&lt;p&gt;class Module
  private&lt;/p&gt;

&lt;p&gt;def readonly(*sym)
    puts sym
    return if sym.size ==0
    code =""&lt;/p&gt;

&lt;p&gt;sym.each do |m| 
      code &amp;lt;&amp;lt; "def #{m}; @#{m};end\n"
    end&lt;/p&gt;

&lt;p&gt;class_eval code
  end&lt;/p&gt;

&lt;p&gt;def readwrite(*sym)
    return if sym.size == 0
    code =""&lt;/p&gt;

&lt;p&gt;sym.each do |m|
      code &amp;lt;&amp;lt; "def #{m};@#{m};end\n"
      code &amp;lt;&amp;lt; "def #{m}=(c);@#{m} = c; end\n"
    end&lt;/p&gt;

&lt;p&gt;#############################################&lt;/p&gt;
&lt;h2 id="class_eval{code}　无法注入方法"&gt;class_eval{code} 无法注入方法&lt;/h2&gt;
&lt;p&gt;#############################################
    class_eval do&lt;br&gt;
      code
    end
  end&lt;/p&gt;

&lt;p&gt;end&lt;/p&gt;</description>
      <author>whatever0914</author>
      <pubDate>Mon, 29 Oct 2012 10:35:45 +0800</pubDate>
      <link>https://ruby-china.org/topics/6378</link>
      <guid>https://ruby-china.org/topics/6378</guid>
    </item>
  </channel>
</rss>
