add notes
[ruby_quiz.git] / NOTES
1
2 Quiz #1:
3
4 The answer key in the book has two solutions: one using ERB where you
5 basically convert the madlib text into an ERB template and evaluate
6 it.  The other creates classes for Replacement object and Question
7 objects.
8
9 What I did was to do this without creating classes, just an array and
10 a hash and a string.  After some playing around, I discovered that the
11 block form of String#gsub! was a powerful tool.  Some stumbling
12 blocks:  
13
14 1. It took me a while to discover the block form of gsub.  Initially,
15 I used match with the additional position argument, and figured I'd
16 loop until the match returned nothing.  Then I was going to use
17 String#scan.
18
19 2. Getting the structure of the block correct took some googling.  I
20 like being able to return early from a block in order to keep the
21 if/else logic simple.  It turns out that in ruby, you don't generally
22 want to use 'return', you either want 'break' or most likely, 'next'.
23 I just didn't realize that you can provide an argument to those
24 functions to control the return value out of the block.
25
26 3. Using plain 'gets' is frustrating.  It tends to pick up input from
27 command line arguments.  $stdin.gets is what you want.