It says:

"I am an abstract collection of elements with a fixed range of
integers (from 1 to n>=0) as external keys."

now that leaves me clueless, why then it does not defines (introduces)
a protocol:
 #at:
and
 #at:put:

at least as an abstract one , i.e. subclassResponsibility

is it because they are already in Object protocol? And because
subclasses (like Array) using default #at: implementation?

I don't know, but i think Object should not have #at:/#at:put:
protocol.. because:
 - it applicable only to variable subclasses
 - many classes have own implementation of it
 - the behavior behind this is to access a variable fields . while
other classes use this protocol for higher abstractions (like
dictionaries)

so, to my thinking, Object should not define this protocol.. for this
purpose we having #basicAt:/put: methods.

btw, just an idea to clarify things even more, we could rename them to
variableAt: [put:]
(or any other name which properly tells that method provides an access
to variable fields of object).


-- 
Best regards,
Igor Stasenko.

Reply via email to