From: Lyle Johnson Date: 2003-06-01T08:19:05+09:00 Subject: Re: newbie questions Steven Ketcham wrote: > 5/31/2003 2:26:03 PM, Jim Freeze wrote: > >>BTW, after I became rubyized, I found myself not needing >>solutions that were based in C/C++, and for this particular >>case, changed my design to use symbols. > > Could you elaborate on this a little more? If you're just using an enumerated type to differentiate between different mutually exclusive options and don't care what their numeric values are -- as appears to be the case in your example -- Ruby symbols (a.k.a. "interned" strings or atoms) are a nice alternative: class TransferSummary def doSummary # site list doSql (getSiteListSQL(), :SiteList) # transfer error count doSql (getTransferErrorCountSQL(), :TransferErrorCount) # baud rate average doSql (getTransferBaudRateAverageSQL(), :BaudRateAverage) # transfer count doSql (getTransferCountSQL(), :TransferCount) end def doSql(sqlStmt, whichFunction) database = DatabaseFunctions.new database.doSql( sqlStmt ) do |dataset| row.each_with_name do |siteKey, value| case whichFunction when :SiteList transferSummaryCountHolder = TransCountHolder.new(siteKey, value) @countsContainer[:SiteKey] = transferSummaryCountHolder when :TransferErrorCount @countsContainer[siteKey].errors = value when :BaudRateAverage @countsContainer[siteKey].baudAverage = value when :TransferCount @countsContainer[siteKey].tranfersCounted = value end end end database.finish end end Hope this helps, Lyle