Re: [Ficl-developers] Quick FICL OO Question
Brought to you by:
jsadler
From: john s. <joh...@al...> - 2001-11-26 16:11:59
|
David - You need to create an 'init' method for your class that takes the ( c-addr u -- ) of the filename off the stack and uses it to create the instance as you wish. Right now there's no easy way to override a metaclass method, unfortunately. But I did think enough to provide a hook in the form of 'init' to do this sort of thing. Alternatively, you could define a 'fromstring' method that does the setup that you want and call it explicitly on a new instance. This has the advantage that it does not change the expected signature of 'init' ( 2:this -- ). If you create a 'new' method in c-inifile, it does not have the effect you want. Since methods of c-inifile describe the behavior of c-inifile *instances*, you are not overriding metaclass's 'new'. There are certainly times when it would be good to be able to extend metaclass in various ways. - John At 11/22/01 08:38 PM, you wrote: >Hi, > >I want to build a class with a constructor that takes and argument and >acts on that argument. > >For example: > > s" file.ini" c-inifile --> new ( "filename" -- class inst ) > >c-inifile is a class governing *.ini files, whose 'new' constructor >method takes a filename argument, parses the file's contents, and >returns a class-instance pair on the stack. > >If I simply define a method 'new' within the class def, will execution >of this method result in an automatic call to the 'metaclass' 'new' >method? > >Or will I need to have something like > > postpone super --> new > >within c-inifile's 'new' method? And in this case, will 'super --> >new' create an instance of the correct size? > >Thoughts? >David > > > >_______________________________________________ >Ficl-developers mailing list >Fic...@li... >https://lists.sourceforge.net/lists/listinfo/ficl-developers John Sadler - joh...@al... T 650-595-4954 F 603-687-2885 C 415-271-6795 |