> foo s" /> > foo s" /> > foo s"/>

Overriding and extending trait methods in Pharo

45 views Asked by At

Is it possible to extend trait methods by overriding them and calling super? For example:

TMyTrait >> foo
    "do something"

MyClassThatUsesTrait >> foo
    super foo.
    "do something else"
1

There are 1 answers

1
Oleksandr Zaitsev On

Answered on Discord by Cyril Ferlicot:

We can override methods, but traits are here to compose stuff. Not really to specialize stuff.

That being said, there is a workaround that is based on Trait aliases (See Pharo-Wiki: https://github.com/pharo-open-documentation/pharo-wiki/blob/master/General/Traits.md#alias-some-methods-received-from-the-trait)

TMyTrait >> foo
    "do something"

Object subclass: #MyClassThatUsesTrait
    uses: TMyTrait @ { #basicFoo -> #foo }
    ...

MyClassThatUsesTrait >> foo
    self basicFoo.
    "do something else"