Search the web
Sign In
New User? Sign Up
arctan · Austin Ruby Coders
? Already a member? Sign in to Yahoo!

Yahoo! Groups Tips

Did you know...
Want your group to be featured on the Yahoo! Groups website? Add a group photo to Flickr.

Best of Y! Groups

   Check them out and nominate your group.
Having problems with message search? Fill out this form to ensure your group is one of the first to be migrated to the new message search system.

Messages

  Messages Help
Advanced
Double Meta   Message List  
Reply | Forward Message #1876 of 1899 |
Re: [arctan] Double Meta

Wondering the same thing myself. Jim, do you have an application?

Sorry I didn't make it. I wanted to come, but something came up.

While on the topic of singletons, this is how I make my singleton *objects*:

singletonObject = Class.new(base_class) { # base_class defaults to Object
def foo ... # or define_method
...
}.new

All this does is create an anonymous class and call new on the class to create
the singleton object (for that class). I find this more intuitive and readable
than dealing with meta classes.

This is also a great way to make a "duck" - make a custom object walk/talk like
some duck.

The meta class way to make a singleton object would be something like this:

singletonObject = base_class.new
class << singletonObject
def ...
...
end

or if you need to use define_method to get at things in your scope ("class"
creates an independent scope), it gets uglier:

singletonObject = base_class.new
singletonObjectMetaClass = (class << singletonObject; self; end)
singletonObjectMetaClass.send.define_method(...) {...}
...

- Eric

--- On Thu, 11/20/08, MarsHall <m@...> wrote:

> From: MarsHall <m@...>
> Subject: Re: [arctan] Double Meta
> To: arctan@yahoogroups.com
> Date: Thursday, November 20, 2008, 11:45 AM
> For those of us not in attendance to the meeting:
> Is this useful, or purely experimental Ruby?
>
> *Mars
>
>
> On Nov 19, 2008, at 22:46, Jim Freeze wrote:
>
> > For those that attended the meeting, here is my code
> where
> > I introduce a singleton class in a singleton class.
> >
> > class C
> >
> > class << self
> > class << self
> > def foo
> > "foo"
> > end
> > end
> >
> > def fred
> > "fred"
> > end
> >
> > def single
> > class << self
> > self
> > end
> > end
> > end
> > end
> >
> > p C.fred
> > p C.single.foo
> >
> > b = C.clone
> > p b.fred
> > p b.single.foo # undefined method foo
> >
> >
> >
> > --
> > Jim Freeze
>
>
> ( <> .. <> )
>
>
>
> ------------------------------------
>
> Yahoo! Groups Links
>
>
>



Thu Nov 20, 2008 10:37 pm

eric_mahurin
Offline Offline
Send Email Send Email

Forward
Message #1876 of 1899 |
Expand Messages Author Sort by Date

For those that attended the meeting, here is my code where I introduce a singleton class in a singleton class. class C class << self class << self def foo ...
Jim Freeze
drjimfreeze
Offline Send Email
Nov 20, 2008
6:46 am

Completely work safe, realted to Jim's double singleton class. http://tinyurl.com/6crlx9 http://tinyurl.com/5z35ln Wayne...
Wayne Walker
wwalker_bybent
Offline Send Email
Nov 20, 2008
2:01 pm

For those of us not in attendance to the meeting: Is this useful, or purely experimental Ruby? *Mars ... ( <> .. <> )...
MarsHall
mars_of_earth
Offline Send Email
Nov 20, 2008
5:46 pm

... We were talking about ghost (aka singleton, meta-, eigen- classes) and I was wondering if I could put a meta class on a meta class. And, if I did, would a...
Jim Freeze
drjimfreeze
Offline Send Email
Nov 20, 2008
9:03 pm

Wondering the same thing myself. Jim, do you have an application? Sorry I didn't make it. I wanted to come, but something came up. While on the topic of...
Eric Mahurin
eric_mahurin
Offline Send Email
Nov 20, 2008
10:37 pm

... Not really. I was really just exploring the language. Besides, this type of things already exists with #dup and #clone. I suppose if you wanted to add...
Jim Freeze
drjimfreeze
Offline Send Email
Nov 21, 2008
2:06 pm

... http://en.wikipedia.org/wiki/Singleton_pattern I'm not sure my instance of an anonymous class actually matches the "singleton pattern", but I believe it is...
Eric Mahurin
eric_mahurin
Offline Send Email
Nov 22, 2008
7:53 pm
Advanced

Copyright © 2009 Yahoo! Inc. All rights reserved.
Privacy Policy - Terms of Service - Guidelines - Help