Putting public methods in Object that it cannot honestly support makes
#respondsTo: pretty unreliable.  It is an obsolete practice, because
having Traits means that those methods can be mixed in with (part of)
a single line.

On Wed, 13 Mar 2019 at 03:20, Ben Coman <[email protected]> wrote:

> On Tue, 12 Mar 2019 at 21:56, Marcus Denker <[email protected]>
> wrote:
> >
> > Hi,
> >
> > Yes, I do not like it… I think it is there so that you can just make a
> variable subclass and at: / at:put: will work without
> > having to re-implement them…
>
> So we should consider...
> * how often are variable subclasses created ?  by novices or experts ?
> * how much work is it to reimplement those methods ? how difficult to
> know what needs to be done ?
> * what is the balance
>
> cheers -ben
>
>
> >
> > Marcus
> >
> > On 12 Mar 2019, at 04:55, Richard O'Keefe <[email protected]> wrote:
> >
> > I understand #basicAt:[put:] being in Object, but I never understood
> #at:[put:] being there.
> > GNU Smalltalk:
> > st> nil at: 1
> > Object: nil error: Invalid value nil: object not indexable
> > In my Smalltalk, you get a DNU.
> > In Squeak you get a debugger window with title
> > Error: instances of UndefinedObject are not indexable
> > The same for Boolean, Character, and Integer,
> > except Squeak where (20 factorial at: 1) answers 0 (oh dear oh dear oh
> dear).
> > In VW you get a "Subscript out of bounds" error, which is disappointing,
> > as do true and $a, but a LargePositiveinteger gets #shouldNotImplement.
> >
> >
> > On Tue, 12 Mar 2019 at 15:28, Tim Mackinnon <[email protected]> wrote:
> >>
> >> If you forget to initialise a variable which you thought was a
> Dictionary - you get a confusing error message: "Error: only integers
> should be used as indices” if you try an at:put:
> >>
> >> This is a consequence of having at:put: defined on Object (which is a
> bit nasty)
> >>
> >> Should UndefinedObject at least override this and signal something a
> bit more obvious? This is a common and easily done thing and we don't
> support it very well.
> >>
> >> I just did it in some code, and was scratching my head initially until
> I read the stack properly and realised it was something much simpler than I
> thought I had done.
> >>
> >> Any thoughts on this?
> >
> >
>
>

Reply via email to