如何在Strongtalk-2.0(Smalltalk)中定义变量并打印输出
在Strongtalk-2.0中定义变量并打印输出的方法
Strongtalk是带静态类型约束的Smalltalk方言,和标准Smalltalk的变量定义规则有明显差异,具体用法如下:
1. 顶层全局变量的定义与打印
标准Smalltalk允许直接在顶层环境动态定义变量,但Strongtalk要求必须显式声明变量类型,写法和你猜测的一致:
x <Integer> := 2. Transcript show: x.
这里的<Integer>是强制的类型注解,Strongtalk会基于此做静态类型检查。
2. 代码块/方法内的局部变量
在代码块或方法内部,变量需要在声明段(| |内)添加类型注解后才能使用,示例:
"代码块内的局部变量" [ | x <Integer> | x := 3. Transcript show: x asString. ] value. "方法内的局部变量" MyClass>>demoPrint | temp <String> | temp := 'Hello Strongtalk'. Transcript show: temp.
3. 类中的变量(实例/类变量)
如果是类的实例变量或类变量,需要在类定义时就声明类型:
"定义带类型实例变量的类" Object subclass: #Counter instanceVariableNames: 'currentValue <Integer>' classVariableNames: '' poolDictionaries: '' category: 'Examples'. "在类方法中使用并打印" Counter>>initialize currentValue := 0. Counter>>incrementAndShow currentValue := currentValue + 1. Transcript show: currentValue asString.
关键差异总结
- Strongtalk不支持无类型的变量定义,所有变量必须显式声明类型,这是和标准Smalltalk动态类型系统的核心区别。
- 变量可以在顶层(带类型注解)、代码块、方法或类中定义,不存在只能在函数/代码块或类中定义的限制,但顶层必须加类型注解。
内容的提问来源于stack exchange,提问作者Herzog Igzorn
相关产品推荐
相关产品推荐

