Smalltalk—是否有方法确定数据类型?
有没有办法确定smalltalk中已初始化变量的数据类型 例如: 请求理由:Smalltalk—是否有方法确定数据类型?,smalltalk,Smalltalk,有没有办法确定smalltalk中已初始化变量的数据类型 例如: 请求理由: 只有在由特定数据类型调用的情况下,我才需要实现a方法。如果我正确理解您的问题,您可以使用 abc isMemberOf: Array 或 这将检查abc是否是Array类(您称之为数据类型)的实例 也可能 abc respondsTo: #message 这对您很有用,因为它检查是否为abc定义了名为message的方法。如果我正确理解了您的问题,您可以使用 abc isMemberOf: Array 或 这将检
只有在由特定数据类型调用的情况下,我才需要实现a方法。如果我正确理解您的问题,您可以使用
abc isMemberOf: Array
或
这将检查abc
是否是Array
类(您称之为数据类型)的实例
也可能
abc respondsTo: #message
这对您很有用,因为它检查是否为
abc
定义了名为message的方法。如果我正确理解了您的问题,您可以使用
abc isMemberOf: Array
或
这将检查abc
是否是Array
类(您称之为数据类型)的实例
也可能
abc respondsTo: #message
这对您很有用,因为它检查是否为
abc
定义了名为message的方法,只需将该方法添加到数据类型数组中即可。
i、 e到类数组
然后,只有数组的实例才能调用它。只需将该方法添加到数据类型数组中即可。 i、 e到类数组
那么只有数组的一个实例才能调用它。Smalltalk中还有一个常见的习惯用法。在
Object
上定义返回false的方法isArray
;在返回true的类数组
上定义isArray
。这样,您就可以向任何对象发送#isArray
。
但是,如上所述,这个习惯用法强调了一个次优的设计。在Smalltalk中也有一个常见的习惯用法。在
Object
上定义返回false的方法isArray
;在返回true的类数组
上定义isArray
。这样,您就可以向任何对象发送#isArray
。
但是,正如上面所说,这个习惯用法强调了一个次优的设计。您能稍微扩展一下您的示例吗?显式类型检查通常是设计问题的标志。Tobias,谢谢你的建议。这确实是一个设计问题。我只需要在Array类中添加该方法。您能稍微扩展一下示例吗?显式类型检查通常是设计问题的标志。Tobias,谢谢你的建议。这确实是一个设计问题。我只需要在Array类中添加方法,这有助于识别变量的数据类型/类。但是我意识到,如果将该方法添加到array类中,那么只有array类的一个实例[总是一个数组]才能调用它。@AdityaKappagantula否。您可以在任何地方使用
array someMessage
,这有助于识别变量的数据类型/类。但是我意识到,如果将该方法添加到array类中,那么只有array类的一个实例[始终是一个数组]才能调用它。@AdityaKappagantula否。您可以随时从任何地方使用array someMessage