[Cuis-dev] A question on same-named methods
Nicola Mingotti
nmingotti at gmail.com
Sun Aug 15 00:24:35 PDT 2021
Thank you Phil,
the video is instructive. I will try to put a summary in the CookBook
as soon as possible.
bye
Nicola
On 8/14/21 8:18 PM, Phil B wrote:
> Nicola,
>
> tl;dr version: If you haven't already seen it, I'd suggest watching
> https://www.youtube.com/watch?v=jXuoFEkg6UA
> <https://www.youtube.com/watch?v=jXuoFEkg6UA> as it discusses an
> approach to dealing with method overrides, adding instvars etc.
>
> On Sat, Aug 14, 2021 at 1:46 PM Nicola Mingotti via Cuis-dev
> <cuis-dev at lists.cuis.st <mailto:cuis-dev at lists.cuis.st>> wrote:
>
> Hi guys,
>
> I have this question for you. I will describe the problem with an
> example.
>
> I defined a method in my package 'Wunderbar', it is
> 'readFromString', which
> goes into class 'Json class side' and method category '*Wunderbar-DB'.
>
> Now, suppose a day in the future I upgrade Cuis and 'readFromString'
> is now defined into 'Json class'.
>
>
> While you didn't specifically ask about it, this is a good example of
> why you don't want to apply updates to a modified image... behavior is
> often undefined. If you applied updates on top of your loaded code,
> the updates would replace your method which usually isn't what you
> want but you would not get any warning indicating it happened. So if
> you saved your package after applying updates to a modified image,
> your version of the method would disappear and you likely wouldn't
> discover it until you next try to rebuild your image. Or worse, until
> some point in the future after that.
>
> What will happen when i try to load 'Wunderbar' package ?
>
>
> When you load your package, your method will replace the system
> defined one. This is also a good way to have issues if you're not
> expecting it: there will often be code elsewhere in the system
> depending on this new default behavior which your method may not
> provide since you wrote your method before the new one in the core
> image existed. This gets back to the video I recommended at the top of
> this response... you not only need to make sure that your code is the
> last code applied, but also that any overrides you are doing are to
> the version of the method you are expecting. (i.e. you want ensure
> both your code works as well as any other code in the image that
> depended on the old method)
>
>
> . Do i get an error for method name overlap ?
>
>
> No, there is no overlap.
>
> . If not, is there any criteria by which one method should be
> called instead of the other
> for example: looking at which method category it belongs to ?
>
>
> The method category (i.e. *<package>) effectively just tells the
> system which package 'owns' the method. However, a given method for a
> given class can only exist in one place. Whoever defined it last wins.
>
>
>
> bye
>
> Nicola
>
>
> Thanks,
> Phil
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.cuis.st/mailman/archives/cuis-dev/attachments/20210815/487f4e73/attachment.htm>
More information about the Cuis-dev
mailing list