Prev: Recommended way to install Rubygems
Next: gecode/r troubles with constraints definition in a CSP
From: Phillip Curry on 16 Mar 2010 10:02 [Note: parts of this message were removed to make it a legal post.] I want to take an array of strings and convert each member to an integer. array.to_i obviously doesn't work. I tried array.each { |x| x = x.to_i } and that doesn't work either. aray.each_index { |x| array[x] = array[x].to_i } works fine. I'm finding that pretty much every time I try to use each, each_index works better. Why doesn't each work here, is there anything I can do about it, and is there anything in particular that each does better than each_index or should I just drop it entirely? thanks phil
From: Gary Wright on 16 Mar 2010 10:07 On Mar 16, 2010, at 10:02 AM, Phillip Curry wrote: > I want to take an array of strings and convert each member to an integer. > array.to_i obviously doesn't work. => a = %w{1 2 3 4} => ["1", "2", "3", "4"] >> a.map! { |x| x.to_i } => [1, 2, 3, 4] >>
From: Phillip Curry on 16 Mar 2010 10:25 [Note: parts of this message were removed to make it a legal post.] that looks just about right On Tue, Mar 16, 2010 at 10:07 PM, Gary Wright <gwtmp01(a)mac.com> wrote: > > On Mar 16, 2010, at 10:02 AM, Phillip Curry wrote: > > > I want to take an array of strings and convert each member to an integer. > > array.to_i obviously doesn't work. > > => a = %w{1 2 3 4} > => ["1", "2", "3", "4"] > >> a.map! { |x| x.to_i } > => [1, 2, 3, 4] > >> > > >
From: Alex DeCaria on 16 Mar 2010 22:43 Phillip Curry wrote: > I want to take an array of strings and convert each member to an > integer. > array.to_i obviously doesn't work. > I tried array.each { |x| x = x.to_i } and that doesn't work either. > aray.each_index { |x| array[x] = array[x].to_i } works fine. I'm > finding > that pretty much every time I try to use each, each_index works better. > Why > doesn't each work here, is there anything I can do about it, and is > there > anything in particular that each does better than each_index or should I > just drop it entirely? > > thanks > phil The issue is one of scope of local variables. x is a block parameter, and is local to the block. That is why when you change the value of x within the block, it has no affect on array. Each time the block executes, the value of an element in array is copied to x, but changing x doesn't change the value of array. The .each_index method works because array was initialized outside of the block and is available within within the block itself (but x itself is still local to the block). There are times when .each is appropriate, but for what you are doing, each_index is what you need. -Alex -- Posted via http://www.ruby-forum.com/.
From: Sam Yang on 17 Mar 2010 01:15 Gary Wright wrote: > On Mar 16, 2010, at 10:02 AM, Phillip Curry wrote: > >> I want to take an array of strings and convert each member to an integer. >> array.to_i obviously doesn't work. > > => a = %w{1 2 3 4} > => ["1", "2", "3", "4"] >>> a.map! { |x| x.to_i } > => [1, 2, 3, 4] simply ["1","2"].collect(&:to_i) -- Posted via http://www.ruby-forum.com/.
|
Next
|
Last
Pages: 1 2 Prev: Recommended way to install Rubygems Next: gecode/r troubles with constraints definition in a CSP |