Код:
UNIT io.ms.dict USES types.ms.dict ; USES core.ms.dict ; ANY TYPE PRINTABLE BOOLEAN FUNCTION .IsTfwWord PRINTABLE IN aValue ( aValue IsObj ) AND ( aValue IS class::TtfwWord ) >>> Result ; // .IsTfwWord PROCEDURE Print PRINTABLE IN aValue if ( aValue .IsTfwWord ) then begin aValue |N . end else if ( aValue IsArray ) then begin [ '[' aValue .for> ( PRINTABLE IN aValue if ( aValue .IsTfwWord ) then begin aValue |N end else begin aValue ToPrintable end ) ']' ] ' ' strings:CatSep . end else begin aValue . end ; // PrintВывод на печать:
VOID TestWithDump WasGenerated.ms.script.test %SUMMARY %SUM 'Метод WasGenerated.ms.script.test' ; // %SUMMARY %SUM BOOLEAN FUNCTION .WasGenerated %SUMMARY %SUM 'Определяет тот факт, что слово aWord уже использовалось для генерации' ; // %SUMMARY %SUM TtfwWord IN aWord aWord g_WasGenerated array:Has ! ? ( aWord >>>[] g_WasGenerated ) false Result pop:Word:SetValue ; // BOOLEAN FUNCTION .WasGenerated : A %SUMMARY %SUM 'Метод A' ; // %SUMMARY %SUM ; // : A : B %SUMMARY %SUM 'Метод B' ; // %SUMMARY %SUM ; // : B : C %SUMMARY %SUM 'Метод C' ; // %SUMMARY %SUM ; // : C ARRAY STATIC-VAR g_WasGenerated WasGenerated.ms.script.test DumpElement ARRAY [ @ A @ A @ A @ B @ B @ B @ C @ C @ C @ A @ A @ A @ B @ B @ B @ C @ C @ C ] ( .WasGenerated ! ) SWAP Array:Filter ( @ B != ) SWAP Array:Filter pop:Word:Name SWAP Array:Map ( 'C' != ) SWAP Array:Filter Print SWAP Array:Iterate g_WasGenerated Print ; // VOID TestWithDump WasGenerated.ms.script.test A A A A A A [ A B C ]
Комментариев нет:
Отправить комментарий