stack.tm
来自「一个C格式的脚本处理函数库源代码,可让你的C程序具有执行C格式的脚本文件」· TM 代码 · 共 166 行
TM
166 行
\function{__pop_args}\synopsis{Remove n function arguments from the stack}\usage{variable args = __pop_args(Integer_Type n);}\description This function together with the companion function \var{__push_args} is useful for passing the arguments of a function to another function. \var{__pop_args} returns an array of \var{n} structures with a single structure field called \var{value}, which represents the value of the argument.\example Consider the following \var{print} function. It prints all its arguments to \var{stdout} separated by spaces:#v+ define print () { variable i; variable args = __pop_args (_NARGS); for (i = 0; i < _NARGS; i++) { () = fputs (string (args[i].value), stdout); () = fputs (" ", stdout); } () = fputs ("\n", stdout); () = fflush (stdout); }#v- Now consider the problem of defining a function called \var{ones} that returns a multi-dimensional array with all the elements set to 1. For example, \exmp{ones(10)} should return a 1-d array of ones, whereas \exmp{ones(10,20)} should return a 10x20 array.#v+ define ones () { !if (_NARGS) return 1; variable a; a = __pop_args (_NARGS); return @Array_Type (Integer_Type, [__push_args (a)]) + 1; }#v- Here, \var{__push_args} was used to push on the arguments passed to the \var{ones} function onto the stack to be used when dereferencing \var{Array_Type}.\seealso{__push_args, typeof, _pop_n}\done\function{__push_args}\synopsis{Remove n function arguments onto the stack}\usage{__push_args (Struct_Type args);}\description This function together with the companion function \var{__pop_args} is useful for passing the arguments of one function to another. See the desription of \var{__pop_args} for more information.\seealso{__pop_args, typeof, _pop_n}\done\function{_pop_n}\synopsis{Remove objects from the stack}\usage{_pop_n (Integer_Type n);}\description The \var{_pop_n} function pops \var{n} objects from the top of the stack.\example#v+ define add3 () { variable x, y, z; if (_NARGS != 3) { _pop_n (_NARGS); error ("add3: Expecting 3 arguments"); } (x, y, z) = (); return x + y + z; }#v-\seealso{_stkdepth, pop}\done\function{_print_stack}\synopsis{print the values on the stack.}\usage{_print_stack ()}\description This function dumps out what is currently on the \slang. It does not alter the stack and it is usually used for debugging purposes.\seealso{_stkdepth, string}\done\function{_stk_reverse}\synopsis{Reverse the order of the objects on the stack.}\usage{_stk_reverse (Integer_Type n)}\description The \var{_stk_reverse} function reverses the order of the top \var{n} items on the stack.\seealso{_stkdepth, _stk_roll}\done\function{_stk_roll}\synopsis{Roll items on the stack}\usage{_stk_roll (Integer_Type n);}\description This function may be used to alter the arrangement of objects on the stack. Specifically, if the integer \var{n} is positive, the top \var{n} items on the stack are rotated up. If \var{n} is negative, the top \var{abs(n)} items on the stack are rotated down.\example If the stack looks like:#v+ item-0 item-1 item-2 item-3#v- where \exmp{item-0} is at the top of the stack, then \exmp{_stk_roll(-3)} will change the stack to:#v+ item-2 item-0 item-1 item-3#v-\notes This function only has an effect for \exmp{abs(n) > 1}.\seealso{_stkdepth, _stk_reverse, _pop_n, _print_stack}\done\function{_stkdepth}\usage{Get the number of objects currently on the stack.}\synopsis{Integer_Type _stkdepth ()}\description The \var{_stkdepth} function returns number of items on stack prior to the call of \var{_stkdepth}.\seealso{_print_stack, _stk_reverse, _stk_roll}\done\function{dup}\synopsis{Duplicate the value at the top of the stack}\usage{dup ()}\description This function returns an exact duplicate of the object on top of the stack. For some objects such as arrays or structures, it creates a new reference to the array. However, for simple scalar S-Lang types such as strings, integers, and doubles, it creates a new copy of the object.\seealso{pop, typeof}\done\function{exch}\synopsis{Exchange two items on the stack}\usage{exch ()}\description The \var{exch} swaps the two top items on the stack.\seealso{pop, _stk_reverse, _stk_roll}\done\function{pop}\synopsis{Discard an item from the stack}\usage{pop ()}\description The \var{pop} function removes the top item from the stack.\seealso{_pop_n}\done
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?