Тик '
будет анализировать текст сразу после вызова на time:
. Так что для вызова с аргументами это должно быть num1 num2 time: myfunc
Кроме того, эта галочка будет анализировать входной поток во время выполнения. Если у вас есть вызов time:
, встроенный в определение слова, он попытается получить метку выполнения для слова из входного потока, а не для слова, следующего сразу за time:
. Используйте [']
, чтобы получить xt
следующего слова во время компиляции, и передайте это xt
в качестве аргумента time:
: time ( xt -- )
utime 2>R EXECUTE
utime 2R> D-
<# # # # # # # [CHAR] . HOLD #S #> TYPE ." seconds" ;
: foo 0 1000000 0 do i + loop drop ;
: bar num1 num2 ['] foo time ; \ pass the foo's xt as argument to time
Обратите внимание, что в time
нет вызова '
EXECUTE
будет извлекать токен из стека.