You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.01 17:35:59