Class作为Smalltalk中的参数

时间:2014-08-25 06:34:46

标签: smalltalk

我需要知道是否可以将Class作为参数传递给Smalltalk中的方法。例如,

Classname>>method: anObject
self anotherMethod: aClass with: anObject.


Classname>>anotherMethod: aClass with: anObject.
|instance|
instance:= aClass new: anObject aMessage. //supposing "new:" is the instance method of aClass.
instance aMethodFromTheClassRecieved.

2 个答案:

答案 0 :(得分:4)

如果你有:

Classname>>anotherMethod: aClass
  ^ aClass new.

你执行类似的事情:

instance anotherMethod: OrderedCollection

然后你会得到一个OrderedCollection的实例。

在Smalltalk类中也是对象,所以如果你OrderedCollection new实际上向#new对象发送了OrderedCollection class消息。所以你可以像其他对象一样传递类。

P.S。 Smalltalk的主要思想是它具有高度的动态性和实时性。您可以在2-5分钟内尝试一下您要问的事情,看看它是否有效:)

答案 1 :(得分:4)

是。类只是对象。