From: Derek Teixeira Date: 2007-02-19T21:44:46+09:00 Subject: return statement i've been getting confused about what exactly the return statement does... i really think this book i'm reading "learn to program" is really not that great of a book to be reading when getting into programming. While the author covers somethings very much in depth, he barely touches some things for more than a line, and sometimes not at all, and then you end up finding it in his code. Along with that confusion on the return function.. i was code tracing the code below and i understand it, except for one part, i just don't see where the code tells the program to print out the numString. I see it telling the program to in the 'one hundred' section, but not at all in the teens or single digits? i read these forums everyday, and i really don't understand that much of the advanced stuff you guys talk about, but everyday i do begin to understand more and more little parts, i just hope i'm not being a pain in the arse. I guess it's just a little hard learning from a book and having no teacher to learn from.. if you guys are getting annoyed, just let me know. thank you again in advance. def englishNumber number # We only want numbers from 0-100. if number < 0 return 'Please enter a number zero or greater.' end if number > 100 return 'Please enter a number 100 or lesser.' end numString = '' # This is the string we will return. # "left" is how much of the number we still have left to write out. # "write" is the part we are writing out right now. # write and left... get it? :) left = number write = left/100 # How many hundreds left to write out? left = left - write*100 # Subtract off those hundreds. if write > 0 return 'one hundred' end write = left/10 # How many tens left to write out? left = left - write*10 # Subtract off those tens. if write > 0 if write == 1 # Uh-oh... # Since we can't write "tenty-two" instead of "twelve", # we have to make a special exception for these. if left == 0 numString = numString + 'ten' elsif left == 1 numString = numString + 'eleven' elsif left == 2 numString = numString + 'twelve' elsif left == 3 numString = numString + 'thirteen' elsif left == 4 numString = numString + 'fourteen' elsif left == 5 numString = numString + 'fifteen' elsif left == 6 numString = numString + 'sixteen' elsif left == 7 numString = numString + 'seventeen' elsif left == 8 numString = numString + 'eighteen' elsif left == 9 numString = numString + 'nineteen' end # Since we took care of the digit in the ones place already, # we have nothing left to write. left = 0 elsif write == 2 numString = numString + 'twenty' elsif write == 3 numString = numString + 'thirty' elsif write == 4 numString = numString + 'forty' elsif write == 5 numString = numString + 'fifty' elsif write == 6 numString = numString + 'sixty' elsif write == 7 numString = numString + 'seventy' elsif write == 8 numString = numString + 'eighty' elsif write == 9 numString = numString + 'ninety' end if left > 0 numString = numString + '-' end end write = left # How many ones left to write out? left = 0 # Subtract off those ones. if write > 0 if write == 1 numString = numString + 'one' elsif write == 2 numString = numString + 'two' elsif write == 3 numString = numString + 'three' elsif write == 4 numString = numString + 'four' elsif write == 5 numString = numString + 'five' elsif write == 6 numString = numString + 'six' elsif write == 7 numString = numString + 'seven' elsif write == 8 numString = numString + 'eight' elsif write == 9 numString = numString + 'nine' end end if numString == '' # The only way "numString" could be empty is if # "number" is 0. return 'zero' end # If we got this far, then we had a number somewhere # in between 0 and 100, so we need to return "numString". numString end puts englishNumber( 0) puts englishNumber( 9) puts englishNumber( 10) puts englishNumber( 11) puts englishNumber( 17) puts englishNumber( 32) puts englishNumber( 88) puts englishNumber( 99) puts englishNumber(100) -- Posted via http://www.ruby-forum.com/.