<div dir="ltr">Being able to redefine a variable in a tighter scope is a handy feature. It lets you think locally about your program, which is easier than thinking globally.<div><br></div><div>Imagine bar() was written first. Then adding foo to A would be an error—and not because there’s anything wrong with A, but because someone somewhere subclassed A and already used that variable in one of its functions. That’s weird.</div>

</div><div class="gmail_extra"><br><br><div class="gmail_quote">On Sun, Aug 10, 2014 at 7:42 AM, Casper Schipper <span dir="ltr">&lt;<a href="mailto:casper.schipper@gmail.com" target="_blank">casper.schipper@gmail.com</a>&gt;</span> wrote:<br>

<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div style="word-wrap:break-word"><div>Should it not be simply forbidden to redefine a variable like that in a sub-class ?</div>

<div>When you assign instead of declare, the problem disappears.</div><div>So perhaps, instead of &#39;fixing&#39; the bug, we should forbid this kind of use of scope (chuck should throw an error if you try) ? </div><div>

<br></div><div>Casper</div><div><br></div><div><div class=""><div style="margin:0px;font-size:13px;font-family:Monaco;color:rgb(4,51,255)">class <span style="color:#000000">A</span> </div><div style="margin:0px;font-size:13px;font-family:Monaco">

{</div><div style="margin:0px;font-size:13px;font-family:Monaco;color:rgb(4,51,255)">    <span style="color:#de9210">10000</span> <span style="color:#000000">=&gt;</span> int <span style="color:#000000">foo;</span></div>
<div style="margin:0px;font-size:13px;font-family:Monaco">
}</div><div style="margin:0px;font-size:13px;font-family:Monaco;color:rgb(4,51,255);min-height:17px"><br></div><div style="margin:0px;font-size:13px;font-family:Monaco;color:rgb(4,51,255)">class <span style="color:#000000">B</span> extends <span style="color:#000000">A</span> </div>

<div style="margin:0px;font-size:13px;font-family:Monaco">{</div><div style="margin:0px;font-size:13px;font-family:Monaco;color:rgb(4,51,255)">    fun void <span style="color:#000000">bar()</span></div><div style="margin:0px;font-size:13px;font-family:Monaco;color:rgb(4,51,255)">

    <span style="color:#000000">{</span></div></div><div style="margin:0px;font-size:13px;font-family:Monaco;color:rgb(114,158,18)"><span style="color:#0433ff">        </span>// 0 =&gt; int foo;</div><div style="margin:0px;font-size:13px;font-family:Monaco;color:rgb(4,51,255)">

        <span style="color:#de9210">0</span> <span style="color:#000000">=&gt;</span> <span style="color:#000000">foo;</span></div><div class=""><p style="margin:0px;font-size:13px;font-family:Monaco;color:rgb(4,51,255);min-height:17px">

        <br></p><div style="margin:0px;font-size:13px;font-family:Monaco;color:rgb(4,51,255)">        <span style="color:#000000">&lt;&lt;&lt;</span> <span style="color:#515151">&quot;a&quot;</span><span style="color:#000000">,</span> <span style="color:#000000">foo</span> <span style="color:#000000">&gt;&gt;&gt;;</span></div>

<div style="margin:0px;font-size:13px;font-family:Monaco;color:rgb(4,51,255)">        <span style="color:#000000">{</span></div><div style="margin:0px;font-size:13px;font-family:Monaco;color:rgb(4,51,255)">            <span style="color:#000000">&lt;&lt;&lt;</span> <span style="color:#515151">&quot;b&quot;</span><span style="color:#000000">,</span> <span style="color:#000000">foo</span> <span style="color:#000000">&gt;&gt;&gt;;</span></div>

<div style="margin:0px;font-size:13px;font-family:Monaco;color:rgb(4,51,255)">        <span style="color:#000000">}</span></div><div style="margin:0px;font-size:13px;font-family:Monaco;color:rgb(4,51,255)">        <span style="color:#000000">&lt;&lt;&lt;</span> <span style="color:#515151">&quot;c&quot;</span><span style="color:#000000">,</span> <span style="color:#000000">foo</span> <span style="color:#000000">&gt;&gt;&gt;;</span></div>

<div style="margin:0px;font-size:13px;font-family:Monaco;color:rgb(4,51,255)">    <span style="color:#000000">}</span></div><div style="margin:0px;font-size:13px;font-family:Monaco">}</div><div style="margin:0px;font-size:13px;font-family:Monaco;min-height:17px">

<br></div></div><div style="margin:0px;font-size:13px;font-family:Monaco">B b;</div><div style="margin:0px;font-size:13px;font-family:Monaco">b.bar();</div><div style="margin:0px;font-size:13px;font-family:Monaco"><br></div>

<div>
<div style="font-family:Helvetica;font-style:normal;font-variant:normal;font-weight:normal;letter-spacing:normal;line-height:normal;text-align:-webkit-auto;text-indent:0px;text-transform:none;white-space:normal;word-spacing:0px;word-wrap:break-word">

<div><font color="#787878">Casper Schipper</font></div><div><font color="#787878"><a href="mailto:casper.schipper@gmail.com" target="_blank">casper.schipper@gmail.com</a></font></div><div><font color="#787878"><a href="http://www.casperschipper.nl" target="_blank">www.casperschipper.nl</a></font></div>

<div><font color="#787878"><a href="tel:%2B316%2052322590" value="+31652322590" target="_blank">+316 52322590</a></font></div></div>
</div>
<br></div></div><br>_______________________________________________<br>
chuck-users mailing list<br>
<a href="mailto:chuck-users@lists.cs.princeton.edu">chuck-users@lists.cs.princeton.edu</a><br>
<a href="https://lists.cs.princeton.edu/mailman/listinfo/chuck-users" target="_blank">https://lists.cs.princeton.edu/mailman/listinfo/chuck-users</a><br>
<br></blockquote></div><br><br clear="all"><div><br></div>-- <br>Tom Lieber<br><a href="http://AllTom.com/" target="_blank">http://AllTom.com/</a><br><a href="http://infinite-sketchpad.com/" target="_blank">http://infinite-sketchpad.com/</a>
</div>