从Red / System访问运行时功能

时间:2015-03-08 01:17:13

标签: red red-system

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

我注意到Red Runtime中有一些函数用于处理对象上下文中的this,get-values,get-words等。运行时源中有一个名为object.reds

的文件

我如何利用这些?我可以利用这些吗?有没有办法访问它们而无需将(已经包含的)运行时的副本重新包含(并通过扩展编译)到我的应用程序中?

2 个答案:

答案 0 :(得分: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

答案 1 :(得分:1)

通常,对于每个Red数据类型,源中都有一个Red / System文件(请参阅repository),该文件定义了context,其名称与没有{{1的数据类型的(!context!除外,其中以function!为前缀以避免名称冲突)。在这样的_中,为该类型的每个值context定义了函数,以及在例程中可能有用的辅助函数。但是,我可以想象,随着实现的发展,不保证与语言规范无关的辅助功能。因此,我会提醒他们不要太依赖它们。