我可以找到有关数据类型UTYPE的唯一信息!是“尚未为R3记录的文档”和“用户定义的数据类型”,这仍然给我带来了希望,我可以摆脱Rebol的预定义数据类型的规范,并以更直接的方式制定函数的多态性。只是...我不知道如何处理UTYPE!试:
make utype! <2nd-arg>
带有几种参数(包括对象)的对象总是会导致“脚本错误:无效的参数:”。
那么,如何使用它呢?是否完全实现了此功能?如果不是,是否有关于其工作原理的任何信息?
顺便说一句,我很清楚可以通过类似以下的构造来模拟自制数据类型:
make object! [
class: ...
value: ...
]
补编,写于11月8日:
Playing with UTYPE!效果帮助:
>> foo!: make utype! [[] [random: func [value] [42]]]
>> type? foo!
== utype!
>> ? echo
USAGE:
ECHO target
DESCRIPTION:
Copies console output to a file.
ECHO is a native value.
ARGUMENTS:
REBOL System Error:
REBOL System Error #1224: assertion failed
Program terminated abnormally.
This should never happen.
Please contact www.REBOL.com with details.
(在Lion上为2.101.0.2.5)。幕后肯定有事情发生。
最佳答案
如果您在github(https://github.com/rebol/rebol/blob/25033f897b2bd466068d7663563cd3ff64740b94/src/core/t-utype.c)上查看Rebol源代码,很明显该功能尚未构建。
来自文件头的注释:
** Notes: NOT IMPLEMENTED
通过curscode.org搜索将返回大量注释,这些注释显示了针对
utype!
数据类型的计划方向。有计划添加用户定义的数据类型-我们甚至为此保留了一个内置类型utype!。这将使我们能够添加新的数据类型来响应动作,这将使我们在必要时甚至可以使它们支持数学运算。唯一不会得到的是该类型的自定义(非构造)语法,或者能够容纳在值槽中的功能。
-BrianH
资料来源:http://curecode.org/rebol3/ticket.rsp?id=2137