I just had a funny thing happen.
I’ve got a bunch of classes that take a url for their initialize
methods, and do a little cleaning on the url, just in case.
I was setting them all up like this @url = “http://localhost:1948/” @one = pageOne(@url) @two = pageTwo(@url) @three = pageThree(@url)
Because of the housekeeping & pass-by-reference being standard, @url
ended up getting longer and longer, and strange and stranger.
I know a dozen fairly easy ways of solving this problem, but my
question is, what is the right way to solve it in ruby?
I could easily do this in the SuperPage class that all the pages
inherit from, but it seems a tad awkward. Then again so do some of
the other ideas I have.
It looks like your page* and cleanURL methods are in the same class as
the
one you’re initializing? If this is the case why not just access @url
directly in the methods, and avoid passing it to them entirely?
Tanner,
It’s not quite the point. At the moment they are being
accessed directly, bf you’re going to use a clone, to ensure you don’t
manipulate the var being passed in, you’d either have to do one of the
following, and that’s a matter of taste.
def initialize(url)
@url=cleanURL(url.cone)
…
end
or
Because of the housekeeping & pass-by-reference being standard, @url
@url=cleanURL(url.clone)
end
Thanks,
Kyle
I think it’s more standard to use String#dup rather than clone. If all
these pages have access to the cleanURL method why not just do the dup
in there rather than passing in the copy?
@one = pageOne(@url)
inherit from, but it seems a tad awkward. Then again so do some of
these pages have access to the cleanURL method why not just do the dup
in there rather than passing in the copy?
Ken
Oh yeah and the rubyish way to do the dup in cleanURL would be like so
def cleanURL(url)
url = url.dup
…
And then you can continue on your merry way like nothing changed.
I think it’s more standard to use String#dup rather than clone. If all
these pages have access to the cleanURL method why not just do the dup
in there rather than passing in the copy?
Ken
That’s a good option. Would it make sense though? Having it in the
initialize method makes it clear when you start reading the class, but
having it in the cleanURL method shows it to the user where it is
used…
I’m just trying to figure out which way will really be best.
This forum is not affiliated to the Ruby language, Ruby on Rails framework, nor any Ruby applications discussed here.