From: david karapetyan Date: 2007-06-29T08:04:08+09:00 Subject: Re: newby non/programmer trying to understand classes ------=_Part_40805_5791964.1183071850241 Content-Type: text/plain; charset=ISO-8859-1; format=flowed Content-Transfer-Encoding: 7bit Content-Disposition: inline from the code you have provided you don't really need classes and all the machinery they provide. your code simply adds strings to a list which you call surnames. if you want to access the names as well as last names then when you create your lastName object you shouldn't extract the last name and add it to the list but just append the lastName object to the list. On 6/28/07, weathercoach@gmail.com wrote: > > Hello. > Brief disclaimer. I'm coming from a bourne shell back ground and > currently all of my ruby scripts look like shell scripts where I > create methods like i would a shell function and now that I understand > some of the language basics (variables, loops, exceptions) I want to > improve my skills and try to leverage the language instead of just > brute forcing my way through problems. I'm not looking for a one > liner wizardry solution but some help getting a better understanding > of classes and ruby in general to change my approach to writing ruby > scripts. > > I've scaled down my project to the most basic components that will > still allow me to express my areas of confusion. I have a file that > changes daily which contains a list of people in this format > > bob.smith > bill.johnson > betty.joe > tony.johnson > wilbur.smith > > > Additionally I have a directory populated with 1 file per uniq last > name (ie: smith, johnson, joe). I need to parse through the days list > and then cleanse the last name files of the previous entries and > insert the updated list. I've got the script that does this it is > not very efficient (ie: i must define all the last names in > advance). So now i've started to rewrite the script and this is > where I'm stuck > > > # I just barely understand setter/getter enough so can create LastName > objects and then > # read the @first or @last variables > > class LastName > def initialize(n) > @first, @last = n.split(".")[0], n.split(".")[1] > end > > attr_accessor :first, :last > > def get_last > @last > end > end > > # Here I am trying to dynamically define all of the last name > variables which would contain > # all of the strings that have the given last name. > > nf = File.open("people", "r") > surnames = [] > nf.each_line do |l| > p = LastName.new(l) > sur = p.get_last > sur << l > surnames << sur > end > > > # > # I try to access the various "sur" variables which should contain the > list of people with a specific last > # name but cannot figure out how to call the specific instance of > "sur". Is their some way I could > # dynamically create the "sur" variable as say "smith" and then > include them in the "surnames" > # array so later I could loop through the surnames.uniq array and get > the name of all the "sur" > # variables. Here is my pseudo code > > surnames.uniq.each do |s| > namefile = File.open(s,"w+") > namefile << s > end > > > # I realize that my problem is pretty rudimentary but so far i've only > been able to create basic classes > # and instantiate 1 object at a time to understand the getter/setter > methods. Trying to iterate > # through a list my pea brain gets mired in all the different objects > and how do I look at certain ones. > > Anyhoo I'd appreciate comments on my specific dynamic variable > problem or any other pointers > to help my get to the "AH HA!" moment with constructing and using > classes which I feel I'm pretty close to. > TIA. G > > ps: I own many ruby books and have spent about 20 hours trying to > solve this pretty basic situation and dont know where else to go for > help. > > > ------=_Part_40805_5791964.1183071850241--