我有一个词构成了我想要被调用的引用。但是,当我加载代码时,我得到Cannot apply “call” to a run-time computed value。如果我使用 walker 并逐步执行它按预期执行的代码。你应该如何调用构造的报价?
: ba>struct ( array class -- struct array )
[ <struct> swap ] keep struct-slots
[
[ type>> to-type ] keep
name>> setter-word 1quotation curry
[ over ] dip curry call drop
] each
;
编辑:这确实有效
: ba>struct ( array class -- struct array )
[ <struct> swap ] keep struct-slots
[
[ type>> to-type ] keep
name>> setter-word 1quotation curry
[ over ] dip curry call( -- x ) drop
] each
;
问题源于运行时不知道构造引用的堆栈效应是什么。在这些情况下,您必须在调用的引用中声明堆栈的样子。