I'm working on a survey system in Ruby and am having a style crisis with 
a simple bit of code that has left me paralyzed and unable to work.

Respondent data in research surveys is traditionally stored as big 
strings of text like this: "123145992348241110111 11 11  1 1111 3331 1"

This was a made up example, in the real world however, there's sometimes 
hundreds of thousands of characters in each respondent's data string. 
In the stats and analysis section of my program, I'm working out how to 
access subsets of these strings in an object-oriented way.

Something like this appeals to me and is very readable:

if currentRespondent.ascii(0..2) == 123
  currentRespondent.ascii(0..2) = 777
end

How would one actually implement this?

class Respondent
  def ascii(range)
    return @ascii[range]
  end

  # doesn't work
  def ascii(range)=(value)
    @ascii[range] = value
  end
end

currentRespondent = Respondent.new

This is broken code, as Ruby doesn't like me trying to do "def 
a(b)=(c)".  There's other ways to accomplish the same purpose (e.g. def 
setter(range,value)) but I'm obsessed with the attribute writer form -- 
which is just so dang cool.

Anyone have some light they could spare?

Argh.  I've been struggling with this for a week!

-- 
Posted via http://www.ruby-forum.com/.