因此,在试验红色和红色/系统之间来回编组值时出现了问题。我想访问传递给例程的对象的内容。
我注意到Red Runtime中有一些函数用于处理对象上下文中的this,get-values,get-words等。运行时源中有一个名为object.reds
我如何利用这些?我可以利用这些吗?有没有办法访问它们而无需将(已经包含的)运行时的副本重新包含(并通过扩展编译)到我的应用程序中?
答案 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
定义了函数,以及在例程中可能有用的辅助函数。但是,我可以想象,随着实现的发展,不保证与语言规范无关的辅助功能。因此,我会提醒他们不要太依赖它们。