mirror of
https://github.com/ruby/ruby.git
synced 2022-11-09 12:17:21 -05:00
[ruby/csv] Make CSV::Row#dup return a usable Row (#108)
* Make CSV::Row#dup return a usable Row Previously, calling `dup` on a `CSV::Row` object yielded an object whose copy was too shallow. Changing the clone's fields would also change the fields on the source. This change makes the clone more distinct from the source, so that changes can be made to its fields without affecting the source. * Simplify https://github.com/ruby/csv/commit/64a1ea06fc
This commit is contained in:
parent
9141aae8c2
commit
b219cd5ac3
Notes:
git
2020-07-20 03:35:49 +09:00
2 changed files with 4 additions and 1 deletions
|
@ -50,7 +50,7 @@ class CSV
|
|||
|
||||
def initialize_copy(other)
|
||||
super
|
||||
@row = @row.dup
|
||||
@row = @row.collect(&:dup)
|
||||
end
|
||||
|
||||
# Returns +true+ if this is a header row.
|
||||
|
|
|
@ -425,6 +425,9 @@ class TestCSVRow < Test::Unit::TestCase
|
|||
def test_dup
|
||||
row = CSV::Row.new(["A"], ["foo"])
|
||||
dupped_row = row.dup
|
||||
dupped_row["A"] = "bar"
|
||||
assert_equal(["foo", "bar"],
|
||||
[row["A"], dupped_row["A"]])
|
||||
dupped_row.delete("A")
|
||||
assert_equal(["foo", nil],
|
||||
[row["A"], dupped_row["A"]])
|
||||
|
|
Loading…
Reference in a new issue