openlang

在定义执行之前查找 Smalltalk 类

我希望能直接执行这样的代码。

BaseItem subclass: #FirstItem instanceVariableNames: '' classVariableNames: '' poolDictionaries: '' category: 'DEMO2'.
FirstItem subclass: #SecondItem instanceVariableNames: '' classVariableNames: '' poolDictionaries: '' category: 'DEMO2'.

而不用逐行分别求值。

这样做会报错,说 FirstItem 尚未声明,但执行到下一行时,这个声明应该已经存在了。

有没有办法绕过这个问题?

从英语翻译查看原文

后续讨论 2

顺着彼此的依据读下去
  1. 固定链接

    要推迟查找一个类,可以访问名为 Smalltalk 的全局字典 (可以用检查器查看,也可以在浏览器中打开)。classNamed: 或 at: 这样的访问方法能让你取得一个类,即使在编译整个待执行表达式时,那个类名还不存在。

    BaseItem subclass: #FirstItem instanceVariableNames: '' classVariableNames: '' poolDictionaries: '' category: 'DEMO2'.
    (Smalltalk classNamed: #FirstItem) subclass: #SecondItem instanceVariableNames: '' classVariableNames: '' poolDictionaries: '' category: 'DEMO2'.
    从英语翻译查看原文
  2. 固定链接

    有些方言里的 Symbol 能理解 asClass 消息,所以可以这样写。

    BaseItem subclass: #FirstItem instanceVariableNames: '' classVariableNames: '' poolDictionaries: '' category: 'DEMO2'.
    #FirstItem asClasss subclass: #SecondItem instanceVariableNames: '' classVariableNames: '' poolDictionaries: '' category: 'DEMO2
    从英语翻译查看原文

同一个问题的其他角度

  1. 在 Godot 3.3 的 GDScript 中怎样随机选择枚举项而不用逐项列出?

    这是我在 GDScript 中使用的枚举声明。 我想随机选择一个枚举变体,而不用列出所有可能的变体。这样以后增加变体时,就不必修改负责随机选择的代码。 我尝试过下面这种方法。 还有这一种。 两种都失败了。一个返回 Null,另一个报告 "Invali…

    回复 2最近活动 gdscript
  2. Nim 求余语法

    Nim 中怎样表示求余运算? cell % 7 == 0 会给出 undeclared identifier: '%' 这个错误 Google 搜索和查看 SO 都没找到答案。

    回复 2最近活动 nim
  3. 从 APL 函数返回结果

    怎样才能让函数在执行结束后返回一个值? 例如我有这样的代码。 ROUTINE N ? N ⍴ 12 //它会生成 N 个从 1 到 12 的随机值 (N 是函数的参数)。 我只是想知道怎样拿到函数的结果,然后比如把这个结果传给另一个函数。 谢谢大家的…

    回复 2最近活动 apl