https://redmine.ruby-lang.org/https://redmine.ruby-lang.org/favicon.ico?17113305112011-02-25T00:23:07ZRuby Issue Tracking SystemRuby master - Bug #4440: odd evaluation order in a multiple assignmenthttps://redmine.ruby-lang.org/issues/4440?journal_id=159522011-02-25T00:23:07Zmatz (Yukihiro Matsumoto)matz@ruby.or.jp
<ul><li><strong>ruby -v</strong> changed from <i>ruby 1.9.2p0 (2010-08-18 revision 29036) [i686-linux]</i> to <i>-</i></li></ul><p>=begin<br>
まつもと ゆきひろです</p>
<p>In message "Re: <a href="/issues/4440">[ruby-core:35367]</a> [Ruby 1.9 - Bug <a class="issue tracker-1 status-5 priority-4 priority-default closed" title="Bug: odd evaluation order in a multiple assignment (Closed)" href="https://redmine.ruby-lang.org/issues/4440">#4440</a>] [Open] odd evaluation order in a multiple assignment"<br>
on Thu, 24 Feb 2011 23:02:38 +0900, Yusuke Endoh <a href="mailto:mame@tsg.ne.jp" class="email">mame@tsg.ne.jp</a> writes:</p>
<p>|Ruby は左から右に評価が進むと信じていたのですが、多重代入で裏切られました。</p>
<p>|bar より foo が左にあるので、:foo 、:bar の順に出力されることを期待するのですが、なんと :bar 、:foo になります。</p>
<p>|1.9 系列で修正すべきとまでは思いませんが、2.0 で直る可能性はあるでしょうか。</p>
<p>優先順位は高くありませんが、直すべきだと思います。</p>
<p>とはいうものの、1.8のころからこうだったのですし、直すのが難しいのも確<br>
かなのですが。<br>
=end</p> Ruby master - Bug #4440: odd evaluation order in a multiple assignmenthttps://redmine.ruby-lang.org/issues/4440?journal_id=159542011-02-25T00:23:08Zmatz (Yukihiro Matsumoto)matz@ruby.or.jp
<ul></ul><p>=begin<br>
Hi,</p>
<p>Oops, I sent Japanese message to the core. Sorry.</p>
<pre><code> matz.
</code></pre>
<p>In message "Re: <a href="/issues/4440">[ruby-core:35370]</a> Re: [Ruby 1.9 - Bug <a class="issue tracker-1 status-5 priority-4 priority-default closed" title="Bug: odd evaluation order in a multiple assignment (Closed)" href="https://redmine.ruby-lang.org/issues/4440">#4440</a>] [Open] odd evaluation order in a multiple assignment"<br>
on Thu, 24 Feb 2011 23:26:13 +0900, Yukihiro Matsumoto <a href="mailto:matz@ruby-lang.org" class="email">matz@ruby-lang.org</a> writes:<br>
|<br>
|まつもと ゆきひろです<br>
|<br>
|In message "Re: <a href="/issues/4440">[ruby-core:35367]</a> [Ruby 1.9 - Bug <a class="issue tracker-1 status-5 priority-4 priority-default closed" title="Bug: odd evaluation order in a multiple assignment (Closed)" href="https://redmine.ruby-lang.org/issues/4440">#4440</a>] [Open] odd evaluation order in a multiple assignment"<br>
| on Thu, 24 Feb 2011 23:02:38 +0900, Yusuke Endoh <a href="mailto:mame@tsg.ne.jp" class="email">mame@tsg.ne.jp</a> writes:<br>
|<br>
||Ruby は左から右に評価が進むと信じていたのですが、多重代入で裏切られました。<br>
|<br>
||bar より foo が左にあるので、:foo 、:bar の順に出力されることを期待するのですが、なんと :bar 、:foo になります。<br>
|<br>
||1.9 系列で修正すべきとまでは思いませんが、2.0 で直る可能性はあるでしょうか。<br>
|<br>
|優先順位は高くありませんが、直すべきだと思います。<br>
|<br>
|とはいうものの、1.8のころからこうだったのですし、直すのが難しいのも確<br>
|かなのですが。<br>
=end</p> Ruby master - Bug #4440: odd evaluation order in a multiple assignmenthttps://redmine.ruby-lang.org/issues/4440?journal_id=159552011-02-25T00:23:08Zmame (Yusuke Endoh)mame@ruby-lang.org
<ul></ul><p>=begin<br>
Sorry, I've sent a Japanese mail to ruby-core by mistake.<br>
Translation :-)</p>
<p>Hi,</p>
<p>I have believed that Ruby evaluates everything from left to<br>
right, but was betrayed by a multiple assignment:</p>
<p>def foo<br>
p :foo<br>
[]<br>
end<br>
def bar<br>
p :bar<br>
end</p>
<p>x, foo[0] = bar, 0</p>
<p>Because "foo" precedes "bar", I expect that this prints :foo<br>
and :bar in this order, but actually :bar and :foo.</p>
<p>I think that this is a matter in practice. For example,</p>
<p>x, y = y, x</p>
<p>is used to swap the two, but</p>
<p>obj, obj.foo = obj.foo, obj</p>
<p>does not so. This kind of code is often written to rotate<br>
a tree. In fact I realized this behavior when I was writing<br>
a splay tree, like this:</p>
<p>t.left, t.left.right, t = t.left.right, t, t.left</p>
<p>I don't think that this should be fixed in 1.9 series, but<br>
can we fix this in 2.0?</p>
<p>Some people (in Japanese IRC) said me that the behavior is<br>
expected, but note that</p>
<p>foo[0] = bar</p>
<p>does print :foo and :bar in the order.</p>
<p>--<br>
Yusuke Endoh <a href="mailto:mame@tsg.ne.jp" class="email">mame@tsg.ne.jp</a><br>
=end</p> Ruby master - Bug #4440: odd evaluation order in a multiple assignmenthttps://redmine.ruby-lang.org/issues/4440?journal_id=162052011-03-26T22:25:29Zshyouhei (Shyouhei Urabe)shyouhei@ruby-lang.org
<ul><li><strong>Status</strong> changed from <i>Open</i> to <i>Assigned</i></li></ul> Ruby master - Bug #4440: odd evaluation order in a multiple assignmenthttps://redmine.ruby-lang.org/issues/4440?journal_id=213722011-10-18T09:16:39Znaruse (Yui NARUSE)naruse@airemix.jp
<ul><li><strong>Project</strong> changed from <i>Ruby master</i> to <i>14</i></li><li><strong>Target version</strong> deleted (<del><i>3.0</i></del>)</li></ul> Ruby master - Bug #4440: odd evaluation order in a multiple assignmenthttps://redmine.ruby-lang.org/issues/4440?journal_id=214812011-10-23T17:21:09Znaruse (Yui NARUSE)naruse@airemix.jp
<ul><li><strong>Project</strong> changed from <i>14</i> to <i>Ruby master</i></li></ul> Ruby master - Bug #4440: odd evaluation order in a multiple assignmenthttps://redmine.ruby-lang.org/issues/4440?journal_id=280342012-07-14T14:56:10Zko1 (Koichi Sasada)
<ul><li><strong>Description</strong> updated (<a title="View differences" href="/journals/28034/diff?detail_id=20699">diff</a>)</li><li><strong>Status</strong> changed from <i>Assigned</i> to <i>Closed</i></li></ul><p>duplicated (<a href="http://bugs.ruby-lang.org/issues/4443" class="external">http://bugs.ruby-lang.org/issues/4443</a>)</p>