当前位置:  开发笔记 > 编程语言 > 正文

如何在Smalltalk中访问类变量

如何解决《如何在Smalltalk中访问类变量》经验,为你挑选了1个好方法。

我试图在Smalltalk的一个类中访问一个类变量.

我有两个类:Class1和Class2.

Class1具有以下变量:年月日小时分钟.Class2具有以下变量:start-time end-time.在Class2的initialize方法中,我有以下内容:

start-time := Class1 new.
end-time := Class1 new.

现在我想将2012年分配给开始时间,如何在Class1对象的启动时间中访问year变量?



1> Peter Uhnak..:

由于您new要向类发送消息,我将假设您对实例变量感兴趣,而不是类变量(共享变量)(请参阅更新的Pharo示例中的 Pharo对象模型以了解差异).

在Pharo中,所有类/实例变量都是私有的,因此访问它们的方法是创建访问器.

添加到Class1方法

Class1>>year
    ^ year

Class1>>year: aYear
    year := aYear

然后您可以使用适当的值将消息发送到类:

Class2>>initialize
    startTime := Class1 new.
    startTime year: 2012.

    "or by using a cascade"
    startTime := Class1 new
        year: 2012;
        yourself.

如果由于某种原因你需要访问没有访问器的变量,你可以使用元编程:

startTime instVarNamed: #year "meta-getter"
startTime instVarNamed: #year put: 2012 "meta-setter"

最后,'start-time'不是有效的变量名.

推荐阅读
mobiledu2402852413
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有