因此,在尝试在 Red 和 Red/System 之间来回编组值时出现了问题。我想访问传递给例程的对象的内容。
我注意到 Red Runtime 中有一些函数可以在对象上下文中处理诸如此类的事情、get-values、get-words 等。运行时源中有一个文件名为object.reds
我如何利用这些?我可以利用这些吗?有没有一种方法可以在不将(已经包含的)运行时的副本重新包含(并通过扩展编译)到我的应用程序中的情况下访问它们?
因此,在尝试在 Red 和 Red/System 之间来回编组值时出现了问题。我想访问传递给例程的对象的内容。
我注意到 Red Runtime 中有一些函数可以在对象上下文中处理诸如此类的事情、get-values、get-words 等。运行时源中有一个文件名为object.reds
我如何利用这些?我可以利用这些吗?有没有一种方法可以在不将(已经包含的)运行时的副本重新包含(并通过扩展编译)到我的应用程序中的情况下访问它们?
您可以立即从 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
.
一般来说,对于每个 Red 数据类型,源中都有一个 Red/System 文件(请参阅存储库),该文件定义了 a ,其名称context
与该数据类型相同,但不!
带 在这样的 a中,为该类型的每个on 值定义了函数,以及可能在例程中有用的辅助函数。但是,我可以想象,不依赖于语言规范的辅助功能不能保证随着实现的发展而存在。因此,我会警告不要过度依赖它们。context!
function!
_
context
actions