我可以找到有关数据类型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

10-07 18:01