[#67346] Future of test suites for Ruby — Charles Oliver Nutter <headius@...>
I'll try to be brief so we can discuss all this. tl;dr: RubySpec is
19 messages
2015/01/05
[#67353] Re: Future of test suites for Ruby
— Tanaka Akira <akr@...>
2015/01/05
2015-01-06 7:18 GMT+09:00 Charles Oliver Nutter <[email protected]>:
[#67444] [ruby-trunk - Feature #10718] [Open] IO#close should not raise IOError on closed IO objects. — akr@...
Issue #10718 has been reported by Akira Tanaka.
3 messages
2015/01/09
[#67689] Keyword Arguments — Anthony Crumley <anthony.crumley@...>
Please forgive my ignorance as I am new to MRI development and am still
5 messages
2015/01/20
[#67733] [ruby-trunk - Bug #10761] Marshal.dump 100% slower in 2.2.0 vs 2.1.5 — normalperson@...
Issue #10761 has been updated by Eric Wong.
4 messages
2015/01/21
[#67736] Re: [ruby-trunk - Bug #10761] Marshal.dump 100% slower in 2.2.0 vs 2.1.5
— Eric Wong <normalperson@...>
2015/01/22
[email protected] wrote:
[#67772] Preventing Redundant Email Messages — Jeremy Evans <code@...>
For a long time, I've wondered why I sometimes receive redundant email
5 messages
2015/01/23
[ruby-core:67416] Re: [ruby-trunk - Bug #10713] Assigning default value for a Hash as an empty Array creating unpredictable results
From:
Austin Ziegler <halostatue@...>
Date:
2015-01-08 01:37:05 UTC
List:
ruby-core #67416
It's quite expected because the default array is created exactly once:
letters =3D Hash.new([])
letters.default.object_id # =3D> 70310393550400
letters[:a].object_id # =3D> 70310393550400
letters[:b].object_id # =3D> 70310393550400
The pattern that Arvinder *wants* is:
letters =3D Hash.new { |h, k| h[k] =3D [] }
letters.default # =3D> nil
letters.default_proc # =3D> #<Proc:0x007fe4d4099988@(irb):7>
letters[:a].object_id # =3D> 70310393174180
letters[:b].object_id # =3D> 70310393171680
It's possible to make the correct pattern do the "wrong thing":
array =3D []
array.object_id # =3D> 70310393550400
letters =3D Hash.new { |h, k| h[k] =3D array }
letters.default # =3D> nil
letters.default_proc # =3D> #<Proc:0x007fe4d4099988@(irb):7>
letters[:a].object_id # =3D> 70310393550400
letters[:b].object_id # =3D> 70310393550400
-a
On Wed, Jan 7, 2015 at 8:16 PM, <[email protected]> wrote:
> Issue #10713 has been updated by Martin D=FCrst.
>
>
> Hiroshi SHIBATA wrote:
> > It's expected behavior
>
> Hiroshi, can you tell us why it's expected behavior? It looks quite
> surprising.
>
> ----------------------------------------
> Bug #10713: Assigning default value for a Hash as an empty Array creating
> unpredictable results
> https://bugs.ruby-lang.org/issues/10713#change-50846
>
> * Author: Arvinder Singh
> * Status: Rejected
> * Priority: Normal
> * Assignee:
> * Category: core
> * Target version: current: 2.2.0
> * ruby -v: ruby 2.2.0p0 (2014-12-25 revision 49005) [x86_64-darwin14]
> * Backport: 2.0.0: UNKNOWN, 2.1: UNKNOWN, 2.2: UNKNOWN
> ----------------------------------------
> Creating a Hash with a default value works fine, unless the default value
> is an empty Array.
>
> E.g. the following returns an empty Hash...
>
> ~~~
> irb(main):001:0> letters =3D Hash.new([])
> =3D> {}
> irb(main):002:0> letters[:a] << 1
> =3D> [1]
> irb(main):003:0> letters[:a] << 2
> =3D> [1, 2]
> irb(main):004:0> letters[:a]
> =3D> [1, 2]
> irb(main):005:0> letters
> =3D> {}
> ~~~
>
> whereas the following code explicitly defining hash keys works.
>
> ~~~
> irb(main):001:0> letters =3D {a: [], b: []}
> =3D> {:a=3D>[], :b=3D>[]}
> irb(main):002:0> letters[:a] << 1
> =3D> [1]
> irb(main):003:0> letters[:a] << 2
> =3D> [1, 2]
> irb(main):004:0> letters[:a]
> =3D> [1, 2]
> irb(main):005:0> letters
> =3D> {:a=3D>[1, 2], :b=3D>[]}
> ~~~
>
> Is this an unpredictable(bug) or an expected behavior(feature). I tend to
> lean towards the former, but I might be wrong.
>
>
>
> --
> https://bugs.ruby-lang.org/
>
--=20
Austin Ziegler * [email protected] * [email protected]
http://www.halostatue.ca/ * http://twitter.com/halostatue