Loading [MathJax]/jax/output/HTML-CSS/config.js
Ask Your Question
1

Zakázání použití defaultního konstruktoru

asked Dec 15 '14

uchytmat gravatar image

updated Dec 15 '14

Miro Hrončok gravatar image

Ahoj, Smalltalk, Pharo. potřeboval bych vytvářet instance třídy hned s parametrem - to není problém, vytvořím si třídní metodu

ic: ic
^ self new
    ic: ic;
    yourself

Lze nějak znemožnit volání defaultního konstruktoru class new. mimo třídní metodu ?

Díky.

add a comment

1 Answer

Sort by » oldest newest most voted
1

answered Dec 15 '14

MiB gravatar image

updated Dec 15 '14

Metodu #new definuješ tak, že např. vyvolá výjimku:

new
    self error: 'Use #ic: to create new instances.'

A v metodě #ic: použiješ self basicNew initialize místo self new pro vytvoření nové instance:

ic: ic
    ^ self basicNew
        initialize;
        ic: ic

#basicNew je primitivní metoda pro skutečné vytvoření nové instance. Nově vytvořené instanci je nutné zaslat #initialize, protože to právě standardně zajišťuje metoda #new (je definována jako ^ self basicNew initialize), kterou v tomto případě obcházíš.

link

Comments

díky za vysvětlení.

uchytmat (Dec 15 '14)
add a comment

Your answer

Please start posting your answer anonymously - your answer will be saved within the current session and published after you log in or create a new account. Please try to give a substantial answer, for discussions, please use comments and please do remember to vote (after you log in)!

Add answer

[hide preview]

Question tools

Follow
1 follower

Stats

Asked: Dec 15 '14

Seen: 160 times

Last updated: Dec 15 '14