On Jul 28, 3:34 ¨Âí¬ ¢Íéãèáåì ×® Òùäåò¢ ¼ßí÷òù®®®À÷ïòìäîåô®áôô®îåôwrote:
> RichardOnRails wrote:
> > On Jul 27, 12:36 pm, Prateek Agarwal <prateek.a... / gmail.com> 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.  ¨Â æïòçïô ôï ðáóôéî ôèðòïçòá¨óïòòù©¬  ¨Âèéãè æïììï÷óº
>
> > =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 theser 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:  ¨ÂõâÔåóô®ò>
> > 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