From: Bill Kelly Date: 2001-04-21T08:29:01+09:00 Subject: [ruby-talk:13948] Re: number to string to number From: "Robert Najlis" >[...] > > first I created a class which had two arrays > > class Adapt > > attr_reader :queryNums, :timesUsed > attr_writer :queryNums, :timesUsed > ... > intiialize the arrays (Array.new) > ... > end > > then I ceated another class which had in it an array (@adaptions) to which > I added instances of the class Adapt. I pushed the number zero onto the > times Used array > > @adaptations[@lastQueryNum].timesUsed.push(0) > > then I tried to increment the number in the timesUsed Array - > > I did it this way, > > @adaptations[@lastQueryNum].timesUsed[count] > ="#{@adaptations[@lastQueryNum].timesUsed[count]}".to_i + 1 > > perhaps I could have skipped the casting it to string, as the type was > already string for @adaptations[@lastQueryNum].timesUsed[count]. I casted > it anyway just to get on with things and not have to worry about it. The beautiful thing about languages like ruby, (or Smalltalk, or Perl, etc.) is that often the most expedient way to "just get on with things and not have to worry about it" is to simply, interactively, Ask The Code. irb(main):004:0> class Adapt irb(main):005:1> attr_accessor :timesUsed irb(main):006:1> def initialize irb(main):007:2> @timesUsed = [ ] irb(main):008:2> end irb(main):009:1> end nil irb(main):010:0> adaptations = [ Adapt.new ] [#] irb(main):011:0> lastQueryNum = 0 0 irb(main):012:0> adaptations[lastQueryNum].timesUsed.push(0) [0] irb(main):013:0> count = 0 0 irb(main):014:0> adaptations[lastQueryNum].timesUsed[count] += 1 1 irb(main):015:0> adaptations[lastQueryNum].timesUsed[count].class Fixnum irb(main):016:0> We could, of course, have taken a more direct approach to answering the question, "what happens when we push a number onto an array and try to increment it?" (If that truly was the question, soorry if I have misunderstood :) For instance: irb(main):016:0> a = [ ] [] irb(main):017:0> a.push(0) [0] irb(main):018:0> a[0] += 1 1 irb(main):019:0> a[0].class Fixnum irb(main):020:0> But the former illustrates, perhaps, well, how cool "interactive ruby" can be, I guess. I mean, defining classes from the keyboard and testing them out? Pretty cool, no? =) Regards, Bill Kelly (Ruby newbie, interactive language fanatic)