Код:
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 ]
Комментариев нет:
Отправить комментарий