我是Smalltalk的新手,想了解一些事情并确认其他事情(为了看看我是否得到了这个想法):
1)在Smalltalk变量是无类型的?
2)Smalltalk中唯一的"类型检查"发生在发送消息并且爬升继承层次结构以便将消息绑定到方法时?如果到达类Object,它会抛出运行时错误,因为该方法不存在?
3)没有强制,因为没有类型......?
4)是否可以重载方法或运算符?
5)是否存在某种通用性?我的意思是,参数多态?
6)发送消息时是否对参数进行某种兼容性/等价性检查?或者在分配变量时?
大多数问题可能都有很短的答案(如果我的方向正确).
1)变量没有声明的类型.它们都是对对象的隐式引用.对象知道它们是什么类型.
2)没有隐式类型检查,但如果您愿意,可以进行明确检查.查看方法isMemberOf:和isKindOf:.
3)正确.没有强制的概念.
4)运营商只是消息.任何对象都可以实现任何方法,是的,它有重载.
5)Smalltalk是通用的终极产品.变量和集合可以包含任何对象.具有"泛型"的语言使变量和集合更具体.去搞清楚.多态性基于接收器的类.要做多个多态,请使用双重调度.
6)没有隐式检查.您可以根据需要添加自己的显式检查.