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.
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.
def initailize(url)
@url=cleanURL(url.clone)
end
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?
Thanks,
···
On 7/25/07, Kyle Schmitt <kyleaschmitt@gmail.com> wrote:
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
···
On Jul 25, 11:06 am, "Kyle Schmitt" <kyleaschm...@gmail.com> wrote:
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.
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
def initialize(url)
@url=url.clone
cleanURL
....
end
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.
Ken
···
On Jul 25, 11:38 am, "cardboar...@gmail.com" <cardboar...@gmail.com> wrote:
On Jul 25, 11:06 am, "Kyle Schmitt" <kyleaschm...@gmail.com> wrote:
> 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.
> def initailize(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?
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.
···
On 7/25/07, cardboard42@gmail.com <cardboard42@gmail.com> wrote:
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?