Добрый день, Ruvim Pinka!
Ваше сообщение от 23.11.2007 19:35:
> Да. И глобальный вектор легко превратить в локальный для потока:
> USER-VECT USER-TYPE ' USER-TYPE TO TYPE
>
В смысле, если TYPE был был определен глобально VECT TYPE, то приведенная
выше строка сделает его локальным для потока?
> Наоборот же, локальный сделать глобальным, — трудней. Тоже касается и
> других системных векторов.
>
Поэтому я и предлагаю делать "глобально-локальными", т.е. USER-VECT TYPE,
инициализируемый в начале потока из глобального, какого-нибудь VECT GTYPE,
т.е. ['] GTYPE BEHAVIOR TO TYPE в POOL-INIT. Проблема будет только в том,
что TO GTYPE не заменит TYPE в потоках, созданных ранее, а повлияет
только на
вновь создаваемые. Но глобальных коней обычно на переправе и не меняют...
С другой стороны можно сделать (и вроде когда-то уже делали) особый вариант
USER-VECT, который при отсутствии локального значения берет глобальное,
таких
коней можно будет менять без ограничений. Правда остается проблема с
именами -
какой из переменных логичнее отдать имя TYPE.
Пример такой двойной переменной:
: UVECT
>IN @ ' SWAP >IN ! CREATE
USER-ALIGNED SWAP ,
CELL+ USER-ALLOT
['] _TOUSER-VALUE-CODE COMPILE,
,
DOES> DUP @ USER+ @ ?DUP
IF NIP EXECUTE
ELSE CELL+ >BODY @ EXECUTE THEN
;
: TYPE2 S" {" TYPE1 TYPE1 S" }" TYPE1 ;
: SET ['] TYPE2 TO TYPE ;
UVECT TYPE \ собственно [пере]определение переменной
:NONAME BEGIN SP@ . S" thread" TYPE CR 3000 PAUSE AGAIN ; TASK: TEST1
0 TEST1 START DROP 1000 PAUSE
0 TEST1 START DROP
: TYPE3 ." [" TYPE1 ." ]" ;
:NONAME ['] TYPE3 TO TYPE BEGIN SP@ . S" lthread" TYPE CR 3000 PAUSE
AGAIN ; TASK: TEST2
0 TEST2 START DROP
.( press Enter to set global TYPE vector) CR KEY DROP SET
-------------------------------------------------------------------------
This SF.net email is sponsored by: Microsoft
Defy all challenges. Microsoft(R) Visual Studio 2005.
http://clk.atdmt.com/MRT/go/vse0120000070mrt/direct/01/_______________________________________________
Spf-dev mailing list
Spf-dev@...
https://lists.sourceforge.net/lists/listinfo/spf-dev