From: Rick DeNatale Date: 2009-03-14T23:44:11+09:00 Subject: Re: How do arrays in Ruby work? --001636164afd2e6138046515487c Content-Type: text/plain; charset=ISO-8859-1 Content-Transfer-Encoding: 7bit On Sat, Mar 14, 2009 at 10:12 AM, Peter Wu wrote: > As in how they are organized behind the scenes. > > For example, if I say > > arr = [1, 2, 3, 4] > arr.slice[1] I think you meant either arr.slice(1) or arr[1] arr.slice[1] won't work since slice requires arguments, and this is being interpreted as (arr.slice)[1] > > > Is it going to have to physically relocate everything after 2 in memory? > Would using a linked list be more efficient if a lot of elements are > going to be removed and inserted? So far we haven't done anything which would add or remove anything arr.slice(1) simply returns a reference to the object in the second element of arr. arr is untouched arr.slice(1,3) would return an array containing the second, third and fourth elements, the original array would be untouched. AND The MRI ruby implementation of arrays uses a copy on write scheme, so that both arr and the returned object would actually share memory for the array of references. If one or the other changed then a copy would be triggered. Ruby arrays are implemented rather efficiently both in terms of space and speed. It's usually best to use them simply and only worry about performance issues when they arise, and when they do, it will probably be something other than "I should have used a linked list instead of an array" -- Rick DeNatale Blog: http://talklikeaduck.denhaven2.com/ Twitter: http://twitter.com/RickDeNatale WWR: http://www.workingwithrails.com/person/9021-rick-denatale LinkedIn: http://www.linkedin.com/in/rickdenatale --001636164afd2e6138046515487c--