【问题标题】:Accessing runtime functions from Red/System从 Red/System 访问运行时函数
【发布时间】:2015-03-08 01:17:12
【问题描述】:

因此,在尝试在 Red 和 Red/System 之间来回编组值时出现了问题。我想访问传递给例程的对象的内部结构。

我注意到 Red Runtime 中有一些函数可以在对象上下文中处理诸如获取值、获取字等之类的事情。运行时源中有一个文件名为object.reds

我如何利用这些?我可以利用这些吗?有没有一种方法可以在不将(已包含的)运行时副本重新包含(并通过扩展编译)我的应用程序的情况下访问它们?

【问题讨论】:

  • 请添加一个简短的代码示例来说明您要实现的目标。

标签: red red-system


【解决方案1】:

您可以立即从 Red/System 例程中调用这些。不需要额外的包含。这是一个简短的例子:

Red []

get-object-size: routine [
    obj [object!]
    return: [integer!]
] [
    object/get-size obj
]

print get-object-size object [foo: 42 bar: 99]

当你编译并运行它时,它最终会输出2

【讨论】:

    【解决方案2】:

    一般来说,对于每个 Red 数据类型,源中都有一个 Red/System 文件(参见 repository),它定义了一个 context,其名称与没有 ! 的数据类型相同(@ 除外987654324@ 和 function!,其中前缀 _ 以避免名称冲突)。在这样的context 中,为每个actions 定义了针对该类型值的函数,以及可能在例程中有用的辅助函数。但是,我可以想象,不依赖于语言规范的辅助功能不能保证随着实现的发展而存在。因此,我会告诫不要过度依赖它们。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多