5

我想在 Factor 中保留一个引用作为元组的成员。但是当我尝试对其执行“调用”时,我收到错误“无法将调用应用于运行时计算值”。请注意,将函数标记为“内联”没有任何作用。

示例代码:

USING: accessors kernel ;
IN: stackoverflow

TUPLE: quottuple quot ;
C: <quottuple> quottuple

: call-quot ( quottuple -- result )
    quot>> call ; inline

: main ( -- )
    [ 1 ] <quottuple>
    call-quot drop ;

MAIN: main
4

1 回答 1

5

答案是'call('这个词。这个词需要你指定引用的堆栈效果,但结果是在编译时不需要知道引用。

USING: accessors kernel ;
IN: stackoverflow

TUPLE: quottuple quot ;
C: <quottuple> quottuple

: call-quot ( quottuple -- result )
    quot>> call( -- result ) ;

: main ( -- )
    [ 1 ] <quottuple>
    call-quot drop ;

MAIN: main
于 2010-12-15T07:36:48.363 回答