[#66678] [ruby-trunk - Feature #10481] Add "if" and "unless" clauses to rescue statements — alex@...
Issue #10481 has been updated by Alex Boyd.
3 messages
2014/12/04
[#66762] Re: [ruby-changes:36667] normal:r48748 (trunk): struct: avoid all O(n) behavior on access — Tanaka Akira <akr@...>
2014-12-10 0:44 GMT+09:00 normal <ko1@atdot.net>:
3 messages
2014/12/10
[#66851] [ruby-trunk - Feature #10585] struct: speedup struct.attr = v for first 10 attributes and struct[:attr] for big structs — funny.falcon@...
Issue #10585 has been updated by Yura Sokolov.
3 messages
2014/12/15
[#67126] Ruby 2.2.0 Released — "NARUSE, Yui" <naruse@...>
We are pleased to announce the release of Ruby 2.2.0.
8 messages
2014/12/25
[#67128] Re: Ruby 2.2.0 Released
— Rodrigo Rosenfeld Rosas <rr.rosas@...>
2014/12/25
I can't install it in any of our Ubuntu servers using rbenv:
[#67129] Re: Ruby 2.2.0 Released
— SHIBATA Hiroshi <shibata.hiroshi@...>
2014/12/25
> I can't install it in any of our Ubuntu servers using rbenv:
[ruby-core:67257] [ruby-trunk - Feature #10683] [Open] fix inconsistent behavior of Kernel.Hash()
From:
recursive.madman@...
Date:
2014-12-31 19:35:39 UTC
List:
ruby-core #67257
Issue #10683 has been reported by Recursive Madman.
----------------------------------------
Feature #10683: fix inconsistent behavior of Kernel.Hash()
https://bugs.ruby-lang.org/issues/10683
* 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/