4

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

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

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

4

2 回答 2

2

您可以立即从 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.

于 2015-03-08T16:10:02.300 回答
1

一般来说,对于每个 Red 数据类型,源中都有一个 Red/System 文件(请参阅存储库),该文件定义了 a ,其名称context与该数据类型相同,但不!带 在这样的 a中,为该类型的每个on 值定义了函数,以及可能在例程中有用的辅助函数。但是,我可以想象,不依赖于语言规范的辅助功能不能保证随着实现的发展而存在。因此,我会警告不要过度依赖它们。context!function!_contextactions

于 2015-05-09T12:20:13.380 回答