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 <btc@openinworld.com> wrote:
On Tue, 12 Mar 2019 at 21:56, Marcus Denker <marcus.denker@inria.fr> 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 <raoknz@gmail.com> 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 <tim@testit.works> 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?