smalltalk - Smalltalk 中的变量类型

标签 smalltalk squeak gnu-smalltalk

我需要帮助理解 Smalltalk 中变量的用法和差异。 下面给定代码中每个变量的区别和用法是什么?

Object subclass: #MyClass
  instanceVariableNames: 'x'
  classVariableNames: 'Yy'
  poolDictionaries: ''
  category: 'helpMe'

MyClass class
  instanceVariableNames: 'zzz'

最佳答案

实例变量 (x) 是实例的本地变量。该类或任何其他实例都无法访问该变量。

类变量 (Yy) 是类、其所有实例、所有子类和所有子实例(即整个层次结构)的本地变量。任何子类或子实例都可以看到该变量的值。

类实例变量 (zzz) 是类的本地变量。只有定义变量的类才能访问它,实例和子类都看不到该变量(尽 pipe 类继承了变量的声明,但它们的变量将具有不同的值)。 类也是 Smalltalk 中的对象。因此,您可以像考虑实例变量一样来考虑类实例变量:没有其他实例(类的实例)可以看到该值。感谢@Amos M. Carpenter 指出了这一点。

关于smalltalk - Smalltalk 中的变量类型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30967183/

相关文章:

pharo - 类浏览器中图标的含义

smalltalk - 新 Squeak (5.0) 中 Squeak FFI 的语法是什么

smalltalk - Pharo 只是 Squeak 的重新包装/品牌 reshape 吗?

unicode - 在 Smalltalk 实现中测试 Unicode 支持的正确方法是什么?

deployment - 如何使用 Pharo 或 Squeak 部署一个不错的单窗口应用程序?

smalltalk - 使用 pharo Smalltalk 初始化

ruby - 最 'pure' 的面向对象语言有哪些?

smalltalk - 试图从 OrderedCollection 中检索元素

smalltalk - 如何在 GNU Smalltalk 中查看图像代码?

java - 将 Small talk 方法名称和签名转换为 Java 方法名称和签名