Project

General

Profile

Actions

Bug #16164

closed

ENV.each with block returns ENV object itself, not Hash

Added by burdettelamar@yahoo.com (Burdette Lamar) over 4 years ago. Updated over 4 years ago.

Status:
Closed
Assignee:
-
Target version:
-
ruby -v:
ruby 2.6.3p62 (2019-04-16 revision 67580) [x64-mingw32]
[ruby-core:94908]

Description

My code:

x = ENV.each { |name, value| }
puts "Return value class: #{x.class}"
puts "Return value is a Hash? #{x.kind_of?(Hash)}"
puts "Return value is actually ENV itself? #{x.object_id == ENV.object_id}"

Its output:

Return value class: Object
Return value is a Hash? false
Return value is actually ENV itself? true

I expected a Hash, because the doc says:

each { |name, value| block } → Hash

There 's some danger here, because if I modify the returned object, I'm actually modifying ENV itself.

I think this is also true for a number of other methods in ENV; e.g., ENV.delete_if.


Files

diff.txt (1.17 KB) diff.txt burdettelamar@yahoo.com (Burdette Lamar), 09/20/2019 06:50 PM
Actions

Also available in: Atom PDF

Like0
Like0Like0Like0Like0