M
Michael Judge
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!
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!