<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0">
  <channel>
    <title>shewer (shewer)</title>
    <link>https://ruby-china.org/shewer</link>
    <description/>
    <language>en-us</language>
    <item>
      <title>如果 object member 是 Array or Hash   该 return  reference or clone</title>
      <description>&lt;p&gt;请问各位
像 Array  Hash 有太多改变内容的 method 是 return reference or clone(dup)&lt;/p&gt;
&lt;pre class="highlight ruby"&gt;&lt;code&gt;&lt;span class="k"&gt;class&lt;/span&gt; &lt;span class="nc"&gt;A&lt;/span&gt;
  &lt;span class="nb"&gt;attr_reader&lt;/span&gt; &lt;span class="ss"&gt;:data&lt;/span&gt;
  &lt;span class="k"&gt;def&lt;/span&gt; &lt;span class="nf"&gt;initialize&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;array&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
    &lt;span class="vi"&gt;@data&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="n"&gt;array&lt;/span&gt;
  &lt;span class="k"&gt;end&lt;/span&gt;
&lt;span class="k"&gt;end&lt;/span&gt;

&lt;span class="n"&gt;a&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="no"&gt;A&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;new&lt;/span&gt;&lt;span class="p"&gt;([&lt;/span&gt;&lt;span class="mi"&gt;1&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="mi"&gt;2&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="mi"&gt;3&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="mi"&gt;4&lt;/span&gt;&lt;span class="p"&gt;])&lt;/span&gt;
&lt;span class="n"&gt;b&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="n"&gt;a&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;data&lt;/span&gt;     &lt;span class="c1"&gt;#   b == @data &lt;/span&gt;
&lt;span class="n"&gt;b&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;append&lt;/span&gt; &lt;span class="mi"&gt;66&lt;/span&gt;  &lt;span class="c1"&gt;# b[1,2,3,4,66]    a.data [1,2,3,4,66]&lt;/span&gt;
&lt;span class="nb"&gt;p&lt;/span&gt; &lt;span class="n"&gt;b&lt;/span&gt;  &lt;span class="c1"&gt;#[1, 2, 3, 4, 66]&lt;/span&gt;
&lt;span class="nb"&gt;p&lt;/span&gt; &lt;span class="n"&gt;a&lt;/span&gt;  &lt;span class="c1"&gt;# #&amp;lt;A:0x00007fffd00eef98 @data=[1, 2, 3, 4, 66]&amp;gt;&lt;/span&gt;

&lt;span class="o"&gt;=&lt;/span&gt;


&lt;/code&gt;&lt;/pre&gt;</description>
      <author>shewer</author>
      <pubDate>Sun, 12 May 2019 20:08:35 +0800</pubDate>
      <link>https://ruby-china.org/topics/38515</link>
      <guid>https://ruby-china.org/topics/38515</guid>
    </item>
    <item>
      <title>jruby  error (win10) unknown encoding name - MS950</title>
      <description>&lt;p&gt;请问 要如何解决 encoding 错误   谢谢
执行  jirb  jruby  都会出现这样的错误&lt;/p&gt;

&lt;p&gt;将 cmd 的环境 改成 65001 utf-8  仍然出现这样的错误&lt;/p&gt;
&lt;h2 id="chcp 65001 (utf-8)"&gt;chcp 65001 (utf-8)&lt;/h2&gt;
&lt;p&gt;C:\WINDOWS\system32&amp;gt;jirb
unknown encoding name - MS950&lt;/p&gt;

&lt;p&gt;C:\WINDOWS\system32&amp;gt;chcp&lt;/p&gt;
&lt;h2 id="Active code page: 65001"&gt;Active code page: 65001&lt;/h2&gt;</description>
      <author>shewer</author>
      <pubDate>Mon, 04 Mar 2019 22:51:23 +0800</pubDate>
      <link>https://ruby-china.org/topics/38188</link>
      <guid>https://ruby-china.org/topics/38188</guid>
    </item>
    <item>
      <title>请教  继承 父类后 需要 覆盖 父类的 private method  如何做到 在不加上 private 宣告 ，仍然是 private method  </title>
      <description>&lt;p&gt;请教各位先进
原由是这样的： &lt;/p&gt;

&lt;p&gt;我想要做 模板模式，需要子类去实现 子方法 可是子方法部份不想要 PUBLIC
为避免以后的 建立子类 忘了加上  private 宣告，而把方法变成 public method. &lt;/p&gt;

&lt;p&gt;或者各位有其他做法可以解决 这个问题 谢谢&lt;/p&gt;
&lt;pre class="highlight ruby"&gt;&lt;code&gt;&lt;span class="k"&gt;class&lt;/span&gt; &lt;span class="nc"&gt;A&lt;/span&gt;
    &lt;span class="kp"&gt;private&lt;/span&gt;
     &lt;span class="k"&gt;def&lt;/span&gt;  &lt;span class="nf"&gt;priv_a&lt;/span&gt;
             &lt;span class="mi"&gt;3&lt;/span&gt;
     &lt;span class="k"&gt;end&lt;/span&gt;
&lt;span class="k"&gt;end&lt;/span&gt;


&lt;span class="k"&gt;class&lt;/span&gt; &lt;span class="nc"&gt;B&lt;/span&gt;   &lt;span class="o"&gt;&amp;lt;&lt;/span&gt; &lt;span class="no"&gt;A&lt;/span&gt;
    &lt;span class="k"&gt;def&lt;/span&gt; &lt;span class="nf"&gt;priv_a&lt;/span&gt;
          &lt;span class="mi"&gt;5&lt;/span&gt;
    &lt;span class="k"&gt;end&lt;/span&gt;
&lt;span class="k"&gt;end&lt;/span&gt;
&lt;span class="n"&gt;a&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="no"&gt;A&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;new&lt;/span&gt;
&lt;span class="n"&gt;a&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;private_methods&lt;/span&gt;    &lt;span class="c1"&gt;# 有 method :a &lt;/span&gt;
&lt;span class="n"&gt;b&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="no"&gt;B&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;new&lt;/span&gt;
&lt;span class="n"&gt;b&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;private_methods&lt;/span&gt;   &lt;span class="c1"&gt;#  没有 metode :a &lt;/span&gt;
&lt;span class="n"&gt;b&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;methods&lt;/span&gt;  &lt;span class="c1"&gt;# 有 method  :a &lt;/span&gt;
&lt;span class="c1"&gt;# 表示   method :a  被重新定 且换到到 public_method&lt;/span&gt;



&lt;/code&gt;&lt;/pre&gt;</description>
      <author>shewer</author>
      <pubDate>Sat, 17 Nov 2018 13:53:34 +0800</pubDate>
      <link>https://ruby-china.org/topics/37781</link>
      <guid>https://ruby-china.org/topics/37781</guid>
    </item>
    <item>
      <title>使用 extend  做装饰模式 ，有没有办法退回上一层</title>
      <description>&lt;p&gt;如题
当我把  module B  及 C  extendi 后&lt;br&gt;
有没有方法拆掉  module C
谢谢&lt;/p&gt;
&lt;pre class="highlight ruby"&gt;&lt;code&gt;&lt;span class="k"&gt;module&lt;/span&gt; &lt;span class="nn"&gt;B&lt;/span&gt;
   &lt;span class="k"&gt;def&lt;/span&gt; &lt;span class="nf"&gt;name&lt;/span&gt;
         &lt;span class="s2"&gt;"B"&lt;/span&gt;  &lt;span class="o"&gt;+&lt;/span&gt; &lt;span class="k"&gt;super&lt;/span&gt;
    &lt;span class="k"&gt;end&lt;/span&gt;  
&lt;span class="k"&gt;end&lt;/span&gt;

&lt;span class="k"&gt;module&lt;/span&gt; &lt;span class="nn"&gt;C&lt;/span&gt;
    &lt;span class="k"&gt;def&lt;/span&gt; &lt;span class="nf"&gt;name&lt;/span&gt;
        &lt;span class="s2"&gt;"C"&lt;/span&gt; &lt;span class="o"&gt;+&lt;/span&gt; &lt;span class="k"&gt;super&lt;/span&gt;
    &lt;span class="k"&gt;end&lt;/span&gt;
&lt;span class="k"&gt;end&lt;/span&gt;
&lt;span class="k"&gt;class&lt;/span&gt; &lt;span class="nc"&gt;A&lt;/span&gt;
    &lt;span class="k"&gt;def&lt;/span&gt;  &lt;span class="nf"&gt;name&lt;/span&gt;
          &lt;span class="s2"&gt;"A"&lt;/span&gt;
    &lt;span class="k"&gt;end&lt;/span&gt;

&lt;span class="k"&gt;end&lt;/span&gt;
&lt;span class="k"&gt;if&lt;/span&gt; &lt;span class="kp"&gt;__FILE__&lt;/span&gt; &lt;span class="o"&gt;==&lt;/span&gt; &lt;span class="vg"&gt;$0&lt;/span&gt;
   &lt;span class="n"&gt;a&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="no"&gt;A&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;new&lt;/span&gt;
  &lt;span class="nb"&gt;puts&lt;/span&gt; &lt;span class="n"&gt;a&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;name&lt;/span&gt;  &lt;span class="c1"&gt;#=&amp;gt; "A"&lt;/span&gt;
  &lt;span class="nb"&gt;puts&lt;/span&gt;  &lt;span class="n"&gt;a&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;singleton_class&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;ancestors&lt;/span&gt;  &lt;span class="c1"&gt;# =&amp;gt; [#&amp;lt;Class:#&amp;lt;A&amp;gt;0x00007fffd913a138&amp;gt;&amp;gt;, B, A, Object, PP::ObjectMixin, Kernel, BasicObject]&lt;/span&gt;

 &lt;span class="n"&gt;a&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;extend&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="no"&gt;B&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
 &lt;span class="nb"&gt;puts&lt;/span&gt;  &lt;span class="n"&gt;a&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;name&lt;/span&gt;           &lt;span class="c1"&gt;# =&amp;gt;  "BA"&lt;/span&gt;
 &lt;span class="nb"&gt;puts&lt;/span&gt;  &lt;span class="n"&gt;a&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;singleton_class&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;ancestors&lt;/span&gt;  &lt;span class="c1"&gt;# =&amp;gt; [#&amp;lt;Class:#&amp;lt;A&amp;gt;0x00007fffd913a138&amp;gt;&amp;gt;, B, A, Object, PP::ObjectMixin, Kernel, BasicObject]&lt;/span&gt;

 &lt;span class="n"&gt;a&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;extend&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="no"&gt;C&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;  
 &lt;span class="nb"&gt;puts&lt;/span&gt;  &lt;span class="n"&gt;a&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;name&lt;/span&gt;         &lt;span class="c1"&gt;# =&amp;gt; "CBA" &lt;/span&gt;
 &lt;span class="nb"&gt;puts&lt;/span&gt;  &lt;span class="n"&gt;a&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;singleton_class&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;ancestors&lt;/span&gt;  &lt;span class="c1"&gt;# =&amp;gt; [#&amp;lt;Class:#&amp;lt;A&amp;gt;0x00007fffd913a138&amp;gt;&amp;gt; ,C, B, A, Object, PP::ObjectMixin, Kernel, BasicObject]&lt;/span&gt;

&lt;span class="k"&gt;end&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;</description>
      <author>shewer</author>
      <pubDate>Mon, 05 Nov 2018 15:28:48 +0800</pubDate>
      <link>https://ruby-china.org/topics/37729</link>
      <guid>https://ruby-china.org/topics/37729</guid>
    </item>
  </channel>
</rss>
