Ok, here's the mess we made ;-).
We've confused you. But don't worry, you've just touched an area of
Smalltalk where the boundaries between computation and magic get very
blurry.
You can implement the method initialze (just like any other method) on
the instance or class side.
For instance side #initialize methods, it is completely okay to send
"super initialize" if instances of this class need to do the same
initialization as instances of its superclass.
In some frameworks, it is a necessity to always send #initialize to
super to make things work. For example, if you subclass WAComponent in a
Seaside application and implement #initialize on this subclass' instance
side, you MUST send super initialize, otherwise you get an exception
when you try to render the component (UndefinedObject DNU #contents).
But on the class side (class method #initialize) it is absolutely
unlikely you ever want to send #initialize to the class' superclass.
We've read a few explanations for this already.
I hope things get a little clearer now.
Joachim
Am 20.08.13 11:52, schrieb Tim Hendriks:
Ok, I don't want to know :-)
Just as a rule: don't call super initialize on the Class site ? But I
can use (the message) initialize on the Class site (for initializing
applications roots in seaside for example) but just do'nt use super in
it. Correct?
Thanks Tim
Op 20-8-2013 11:45, jtuc...@objektfabrik.de schreef:
Hi Tim,
the problem is not the send of #super to a class, but the call of
#initialize of #super on the class side.
As long as you are not interested in very confusing details about the
inheritence hierarchy of Class and Metaclasses and stuff, don't ask,
just do as you're told ;-)
You can, however, have a look at chapter 13 Classes and Metaclasses
of the "Pharo By Example" book (http://pharobyexample.org) if you
want to know more.
A very short and incomplete explanation is that the superclass of a
class is never the superclass of the class of its instances, because
all classes are instances of the same class ( I told you you prabably
don't want to know right now ;-) ).
Joachim
Am 20.08.13 11:34, schrieb Tim Hendriks:
I'am just learning (a few weeks) .... so why not use super in Class?
Thanks Tim
Op 20-8-2013 11:29, Igor Stasenko schreef:
Thanks for your hard work!
1 important remark:
NBXLibTypes class>>initialize
super initialize.
Display := #NBXLibDisplay.
Never use 'super initialize' for class initializers.
On 20 August 2013 09:42, Torsten Bergmann <asta...@gmx.de
<mailto:asta...@gmx.de>> wrote:
I just wrapped this in NB last week, so if you have NativeBoost
and Windows
you can use:
NBWin32Process getCurrentProcessId
(requires the latest packages from
http://smalltalkhub.com/#!/~Pharo/NativeBoost
<http://smalltalkhub.com/#%21/%7EPharo/NativeBoost>)
I'm sure on any other platforms there are API's as well to get
the PID, like
getpid on Unix. Should be easy to wrap in NB if you follow this
tutorial:
https://ci.inria.fr/pharo-contribution/job/PharoForTheEnterprise/lastSuccessfulBuild/artifact/NativeBoost/NativeBoost.pier.html
Bye
T.
--
Best regards,
Igor Stasenko.
--
--
-----------------------------------------------------------------------
Objektfabrik Joachim Tuchel mailto:jtuc...@objektfabrik.de
Fliederweg
1 http://www.objektfabrik.de
D-71640 Ludwigsburg http://joachimtuchel.wordpress.com
Telefon: +49 7141 56 10 86 0 Fax: +49 7141 56 10 86 1