[#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:67280] [ruby-trunk - Feature #10683] fix inconsistent behavior of Kernel.Hash()
From:
shevegen@...
Date:
2015-01-01 03:14:38 UTC
List:
ruby-core #67280
Issue #10683 has been updated by Robert A. Heiler.
Interesting. [] is indeed treated differently than
Hash([nil])
TypeError: can't convert Array into Hash
Hash([1,2])
TypeError: can't convert Array into Hash
Perhaps there is a reason for [] as input is being
treated differently?
----------------------------------------
Feature #10683: fix inconsistent behavior of Kernel.Hash()
https://bugs.ruby-lang.org/issues/10683#change-50743
* Author: Recursive Madman
* Status: Open
* Priority: Normal
* Assignee:
* Category:
* Target version:
----------------------------------------
I find the way the global function `Hash` (aka `Kernel.Hash`) works a bit confusing.
To illustrate:
```ruby
Hash(nil) #=> {} (1)
Hash({}) #=> {} (2)
Hash([]) #=> {} (3)
# but
Hash([[1,2]]) #! TypeError (4)
```
Case (1) and (2) make perfect sense to me (calling `Hash(var)` when `var` is an optional argument defaulting to `nil` will always give a (possibly empty) Hash or a TypeError, which is very useful).
Case (3) however seems inconsistent, since (4) doesn't work.
To contrast this with the respective `String` function:
```ruby
String([]) #=> "[]"
String('') #=> ""
String({}) #=> "{}"
String(0) #=> "0"
String(nil) #=> ""
```
it seems that calling `String(obj)` is equivalent to calling `obj.to_s`.
Thus I would assume `Hash(obj)` being equivalent to calling `obj.to_h`.
It is not though (calling `to_h` on `[[1,2]]` gives `{1=>2}`, while using `Hash()` raises a `TypeError`).
I propose to do **one** of the following changes:
* either remove the special handling of `[]`, such that only `nil` or a `Hash` are valid values to be passed to `Hash()`, or
* change `Hash()` to call `to_h` on it's argument, when the argument is neither `nil` nor a `Hash`.
--
https://bugs.ruby-lang.org/