[#82518] [Ruby trunk Feature#13618] [PATCH] auto fiber schedule for rb_wait_for_single_fd and rb_waitpid — mame@...
Issue #13618 has been updated by mame (Yusuke Endoh).
5 messages
2017/08/30
[#82552] Re: [Ruby trunk Feature#13618] [PATCH] auto fiber schedule for rb_wait_for_single_fd and rb_waitpid
— Eric Wong <normalperson@...>
2017/08/31
[email protected] wrote:
[#82756] Re: [Ruby trunk Feature#13618] [PATCH] auto fiber schedule for rb_wait_for_single_fd and rb_waitpid
— Eric Wrong <normalperson@...>
2017/09/12
Eric Wrong <[email protected]> wrote:
[ruby-core:82327] [Ruby trunk Bug#13797][Rejected] Using .push on an 2d array class-instance variable causes the whole array to be overwritten with the .push value; is this a bug?
From:
nobu@...
Date:
2017-08-10 11:51:18 UTC
List:
ruby-core #82327
Issue #13797 has been updated by nobu (Nobuyoshi Nakada).
Description updated
Status changed from Open to Rejected
You share the same array instance as sub-arrays.
```ruby
def initialize(totalSize)
@data_array = Array.new(totalSize,[])
end
```
Make different instances.
```ruby
@data_array = Array.new(totalSize) {[]}
```
or
```ruby
@data_array = [[]] * totalSize
```
----------------------------------------
Bug #13797: Using .push on an 2d array class-instance variable causes the whole array to be overwritten with the .push value; is this a bug?
https://bugs.ruby-lang.org/issues/13797#change-66127
* Author: gggfx (James Pike)
* Status: Rejected
* Priority: Normal
* Assignee:
* Target version:
* ruby -v: ruby 2.2.6p396 (2016-11-15 revision 56800) [x64-mingw32]
* Backport: 2.2: UNKNOWN, 2.3: UNKNOWN, 2.4: UNKNOWN
----------------------------------------
I was building a class to hold results for analysis 'cells' in a model; each 'cell' is a position in an array, with each result stored in a sub-array - this collates multiple results per cell which can then be iterated through later for model interactions.
I created this as a class (my data is addressed by time,x,y and z coordinates; my class writers and readers convert t-x-y-z into a position on a 1d array, this is faster than named instance variables).
When it comes to pushing the data into the instance array variable it causes *all* the slots of the array to be pushed with the value.
This is my first bug report and I'm newish to Ruby so I apologise if I've missed any key information. I attach code with a test-example I wrote which demonstrates the behaviour in question.
## NORMAL CASE
```ruby
testArray = [[],[],[],[],[]]
testArrayShouldLookLike = [[result1],[],[],[],[]]
testArrayCanThenLookLike = [[result1, result2],[],[],[],[]] etc.
```
## CLASS CASE
```ruby
def write(position, data)
@testArray[position].push(data)
end
testArrayComesOutAs = [[result1],[result1],[result1],[result1],[result1]]
```
---Files--------------------------------
Class bug_JP.rb (1.13 KB)
--
https://bugs.ruby-lang.org/
Unsubscribe: <mailto:[email protected]?subject=unsubscribe>
<http://lists.ruby-lang.org/cgi-bin/mailman/options/ruby-core>