From: RichardOnRails Date: 2009-07-29T06:55:04+09:00 Subject: Re: What is the power function On Jul 28, 3:34 pm, "Michael W. Ryder" <_mwry...@worldnet.att.net> wrote: > RichardOnRails wrote: > > On Jul 27, 12:36 pm, Prateek Agarwal wrote: > >> I am new to Ruby and am still learning some of the basic stuff. > >> What's the method name for the Power operation(as in 'a' to the power > >> 'b')? > >> -- > >> Posted viahttp://www.ruby-forum.com/. > > > Whoops.  I forgot to paste in the program (sorry),  which follows: > > > =begin        # Note this comments out all lines until the =end > > def power(a,b) > > result=a**b   # "a" should be "a.chomp.to_1"; ditto "b"; > >               # the "chomp" removes the newline which the user presses > >               # "result" is unnecessary > > result.to_i   # does nothing > > return result # unnecessary: > >               # Since we've eliminated everything else, the method > >               # has only one statement, i.e. the expression > >               # a ** b with the replacements suggested above > >               # Ruby returns the last statement's value > > end > > > puts "a="     # use printf rather than puts (which appends a newline) > > a=gets > > a.to_i        # does nothing; "a" does not get change, and the > > result > >               # is discarded > > puts "b="     # same as "a" > > b=gets > > b.to_i           # ditto as for "a" > > c=power(a,b)  # numeric result assigned to c, probably an integer but > >               # not necessarily > > puts "c=#{c}" # These final two lines might be more elegantly > >               # written in Ruby as suggested below > > =end > > > # The result of all these changes are the following 8 lines > > # (plus blank lines); save them, say, as:       Test.rb > > # and run them as:                              ruby Test.rb > > > def power(a,b) > >   a.chomp.to_i**b.chomp.to_i > > end > > > printf "a=" > > a = gets > > print "b=" > > b = gets > > puts "%d**%d = %d" % [a, b, power(a,b)] > > As an "improvement" to your code I would take the chomp and to_i out of > the power function to make it more generic and add them after the gets. Hi Michael, Your point is well taken. I did that for a newbie to point the stuff that's needs to be done to get things working as he intends. He's not likely to look up "to_i" to learn all its machinations. In fact, there's one more that I would have thrown in, had I remembered it: strip. I do that in string-handlers I write: 1. in part, to remind myself what to_i would do for me automatically 2. in part, to guarantee that that stuff gets done even if new versions of Ruby eliminate some helpful feature. 3. in part, because I might decide to extend a program using the input string as though it contained only the digits that to_i revealed, forgetting that a lot of "baggage" had been removed. Perhaps having taught Computer Technology at AU in DC for a decade gives me a different perspective than production program with a lean- and-mean code perspective. Do I make any sense? Best wishes, Richard