iolanguage getSlot 未返回预期对象

标签 iolanguage

最近我开始学习iolanguage。当尝试“方法”消息时,我写道:

Io> f := method(getSlot("f"))
==> method(
    getSlot("f")
)

Io> slotSummary
==>  Object_0x97f41a8:
  Lobby            = Object_0x97f41a8
  Protos           = Object_0x97f4090
  _                = nil
  exit             = method(...)
  f                = method(...)
  forward          = method(...)
  set_             = method(...)

Io> f
==> nil

但是为什么调用 f 会返回 nil 而不是 "f" 本身?

最佳答案

根据guide method() 引入一个对象来存储本地变量,并将本地变量的 self 指针设置为消息的目标。 因此,目标中没有插槽,但我们可以通过 self 获取它们:

Io> f := method(self getSlot("f"))
==> method(
    self getSlot("f")
)
Io> f
==> method(
    self getSlot("f")
)

关于iolanguage getSlot 未返回预期对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21619802/

相关文章:

iolanguage - self 在方法中的意义是什么?

software-distribution - 有没有用 Io 编程语言编写的应用程序? (或者,分发 Io 应用程序。)

user-interface - 有谁知道 Io 语言的 GUI 库

operators - Io 运算符,似乎无法在文件中创建它们

macos - 安装 IO(语言)时出错

operators - 如何在不使用Io的情况下替换现有运算符?

scope - Io 中的作用域是如何工作的?

iolanguage - 如何在交互式 Io 解释器中输入多行方法?

iolanguage - Io 语言中的 newSlot 和 setSlot 有什么区别?