< :the previous in number
^ :the list in numerical order
> :the next in number
P :the previous artilce (have the same parent)
N :the next (in thread)
|<:the top of this thread
>|:the next thread
^ :the parent (reply-to)
_:the child (an article replying to this)
>:the elder article having the same parent
<:the youger article having the same parent
---:split window and show thread lists
| :split window (vertically) and show thread lists
~ :close the thread frame
.:the index
..:the index of indices
"Stig Sandbeck Mathisen" <ssm / fnord.no> schrieb im Newsbeitrag
news:90lekrj4kn4.fsf / talisker.nsc.no...
>
> I have a program that will create a lot of objects, mainly of type
> SomeDocumentation::Host and SomeDocumentation::Role.
>
> Since the Role objects typically create a lot of Host objects, and the
> other way around, I tried to be clever, and look up objects that
> already exists with the same value of "name", since the initialize
> reads a bit from disk.
>
> I've tried tried to solve it with the following code snippet:
>
> def initialize(name)
>
> ObjectSpace.each_object(self.class) do |anObject|
> return anObject if anObject.name == name
> end
>
> <do the real initialization, since we do not have an object with
> the same .name attribute/method/whatever yet>
>
> end
>
> ...but when it is included in the Host initialize method, I end up
> with a lot of empty Host objects for the second (third, fourth, and so
> on) Role object when doing this from the main script:
>
> roles.uniq.each do |role|
> aRole = SomeDocumentation::Role.new(role)
> puts aRole.documentation
> end
>
> Does anyone see what I'm doing wrong?
>
> --
> Sandbeck Mathisen - http://fnord.no
> Trust the Computer, the Computer is your Friend
module SomeDocumentation
class Named
attr :name
def initialize(name)
@name = name
end
end
class Host < Named
INSTANCES = Hash.new {|h,name| h[name] = self.new(name) }
end
class Role < Named
INSTANCES = Hash.new {|h,name| h[name] = self.new(name) }
end
end
SomeDocumentation::Host::INSTANCES["foo"]
SomeDocumentation::Role::INSTANCES["foo"]
Regards
robert