From: Robert Klemme Date: 2013-07-11T19:43:20+09:00 Subject: Re: create variables depending on counter --047d7b6da782f13a8004e13a0f6c Content-Type: text/plain; charset=ISO-8859-1 On Thu, Jul 11, 2013 at 9:34 AM, stefan heinrich wrote: > Hi, > > > Why are the elements in the arrays not numbers? It looks like you > > rather > > want to work with numbers (Fixnum) here. > > It's not only numbers. In some cases there are strings. > > > > Can you show us what's in data? Please make sure to present complete > > examples, otherwise it's difficult to come up with answers - and to > > follow > > the discussion as well. > > ok sorry... > my code to read out the tablewidget and create the array. > > array = Array.new > > for i in 0..rowCount - 1 > tmp = Array.new > tmp << @tableWidget.item(i, 1).text.to_a > tmp << @tableWidget.item(i, 0).text.to_a > tmp = tmp[0] + tmp[1] > > array << tmp > end > You can make your life a tad easier by not creating all those one element arrays with the #to_a call: array = row_count.times.map do |i| [1, 0].map! {|idx| @table_widget.item(i, idx).text} end Note the different spelling: in Ruby we use CamelCase only for classes and modules and snake_case for the rest. > array.group_by {|s,i| s} > This line does nothing. More precisely: it creates a Hash and then immediately forgets it. > array= array.group_by {|s,i| s}.each {|k,v| v.map! {|s,i| i}} > > The 2d array looks like this after grouping > > {"I OFF"=>["a8", "1e"], "E OFF"=>["98", "a0"], "Emphasized ON"=>["db"], > "I ON"=>["99"]} > > It seems like after using grouping by it is not an array anymore. I use > array[0] and get a nil. How can I take only the values. I would like to > combine all combinations only I with E and E with I. It is not working. > Reading the documentation sometimes really helps. :-) http://www.ruby-doc.org/core-1.9.3/Enumerable.html#method-i-group_by > Cheers robert -- remember.guy do |as, often| as.you_can - without end http://blog.rubybestpractices.com/ --047d7b6da782f13a8004e13a0f6c Content-Type: text/html; charset=ISO-8859-1 Content-Transfer-Encoding: quoted-printable



On Thu, Jul 11, 2013 at 9:34 AM, stefan heinrich = <lists@ruby-fo= rum.com> wrote:
Hi,

> Why are the elements in the arrays not numbers? =A0It looks like you > rather
> want to work with numbers (Fixnum) here.

It's not only numbers. In some cases there are strings.


> Can you show us what's in data? =A0Please make sure to present com= plete
> examples, otherwise it's difficult to come up with answers - and t= o
> follow
> the discussion as well.

ok sorry...
my code to read out the tablewidget and create the array.

=A0 =A0 array =3D Array.new

=A0 =A0 for i in 0..rowCount - 1
=A0 =A0 =A0 tmp =3D Array.new
=A0 =A0 =A0 tmp << @tableWidget.item(i, 1).text.to_a
=A0 =A0 =A0 tmp << @tableWidget.item(i, 0).text.to_a
=A0 =A0 =A0 tmp =3D tmp[0] + tmp[1]

=A0 =A0 =A0 array << tmp
=A0 =A0 end

You can make your life a ta= d easier by not creating all those one element arrays with the #to_a call:<= /div>

array =3D row_count.times.map do |i|
=A0= [1, 0].map! {|idx| @table_widget.item(i, idx).text}
end

Note the different spelling: in Ruby we u= se CamelCase only for classes and modules and snake_case for the rest.
=A0
=A0 =A0 array.group_by {|s,i| s}

This l= ine does nothing. =A0More precisely: it creates a Hash and then immediately= forgets it.
=A0
=A0 =A0 array=3D array.group_by {|s,i| s}.each {|k,v| v.map! {|s,i| i}}

The 2d array looks like this after grouping

{"I OFF"=3D>["a8", "1e"], "E OFF"= ;=3D>["98", "a0"], "Emphasized ON"=3D>[= "db"],
"I ON"=3D>["99"]}

It seems like after using grouping by it is not an array anymore. I use
array[0] and get a nil. How can I take only the values. I would like to
combine all combinations only I with E and E with I. It is not working.
=

Reading the documentation sometimes really= helps. :-)
=A0
Cheer= s

robe= rt


--
remember.guy do |as, often|= as.you_can - without end
http://blog.rubybestpractice= s.com/
--047d7b6da782f13a8004e13a0f6c--