[ ] array:Copy . // - получаем nil [] array:Copy . // - получаем nil [nil] array:Copy . // - получаем nil [empty] array:Copy . // - получаем nil [ ] array:CopyNotNil . // - получаем [ ] [] array:CopyNotNil . // - получаем [ ] [nil] array:CopyNotNil . // - получаем [ ] [empty] array:CopyNotNil . // - получаем [ ] [ 1 2 3 ] array:Copy . // - получаем [ 1 2 3 ] [ 1 2 3 ] .filter> ( 2 != ) array:Copy . // - получаем [ 1 3 ] [ 1 2 3 ] .filter> ( 2 == ) array:Copy . // - получаем [ 2 ] [ 1 2 3 ] .map> ( 1 + ) array:Copy . // - получаем [ 2 3 4 ] [ 1 2 3 ] .map> ( 2 + ) array:Copy . // - получаем [ 3 4 5 ] [ 1 2 3 ] .map> ( 2 * ) array:Copy . // - получаем [ 2 4 6 ] [ 1 2 3 ] .filter> ( 2 != ) .map> ( 1 + ) array:Copy . // - получаем [ 2 4 ] [ 1 2 3 ] .filter> ( 2 == ) .map> ( 1 + ) array:Copy . // - получаем [ 3 ] [ 1 2 3 4 ] .slice> 2 array:Copy . // - получаем [ 1 2 ] [ 3 4 ] [ 1 2 3 4 5 6 ] .slice> 3 array:Copy . // - получаем [ 1 2 3 ] [ 4 5 6 ] [ 1 2 3 4 ] .filter> IsOdd .slice> 2 array:Copy . // - получаем [ 1 3 ] [ 1 2 3 4 ] .filter> IsEven .slice> 2 array:Copy . // - получаем [ 2 4 ] [ 1 2 3 4 5 6 7 8 9 10 ] .filter> IsOdd array:Copy . // - получаем [ 1 3 5 7 9 ] [ 1 2 3 4 5 6 7 8 9 10 ] .filter> IsEven array:Copy . // - получаем [ 2 4 6 8 10 ] [ 1 2 ] .join> [ 3 4 ] array:Copy . // - получаем [ 1 2 3 4 ] [ 1 2 ] .join> [ 3 4 ] .filter> IsOdd array:Copy . // - получаем [ 1 3 ] [ 1 2 ] .join> [ 3 4 ] .filter> IsEven array:Copy . // - получаем [ 2 4 ] [ 1 2 ] .join> [ 3 4 ] .map> ( 1 + ) array:Copy . // - получаем [ 2 3 4 5 ] [ 1 2 ] .join> [ 3 4 ] .filter> IsOdd .map> ( 1 + ) array:Copy . // - получаем [ 2 4 ] [ 1 2 ] .join> [ 3 4 ] .filter> IsEven .map> ( 1 + ) array:Copy . // - получаем [ 3 5 ] [ 1 2 3 4 ] .join> [ 5 6 7 8 ] .filter> IsOdd .map> ( 1 + ) .slice> 2 array:Copy . // - получаем [ 2 4 ] [ 6 8 ] [ 1 2 3 4 ] .join> [ 5 6 7 8 ] .filter> IsEven .map> ( 1 + ) .slice> 2 array:Copy . // - получаем [ 3 5 ] [ 7 9 ] [ 1 2 3 4 ] .join> [ 5 6 7 8 ] .map> ( 1 + ) .filter> IsOdd .slice> 2 array:Copy . // - получаем [ 3 5 ] [ 7 9 ] [ 1 2 3 4 ] .join> [ 5 6 7 8 ] .map> ( 1 + ) .filter> IsEven .slice> 2 array:Copy . // - получаем [ 2 4 ] [ 6 8 ] [ 1 2 3 4 ] .reverted> array:Copy . // - получаем [ 4 3 2 1 ] [ 1 2 ] .join> [ 3 4 ] .reverted> array:Copy . // - получаем [ 4 3 2 1 ] [ 1 2 ] .join> [ 3 4 ] .map> ( 1 + ) .reverted> array:Copy . // - получаем [ 5 4 3 2 ] [ 1 2 ] .join> [ 3 4 ] .filter> ( 2 != ) .map> ( 1 + ) .reverted> array:Copy . // - получаем [ 5 4 2 ]
Примеры:
BOOLEAN elem_func InheritsFrom
ModelElement IN anAncestor
anAncestor :Cached:
(
RULES
( Self IsNil )
false
( Self anAncestor .IsSameType )
true
(
Self .Inherits
.filter> ( anAncestor call.me )
.CountIt > 0
)
true
DEFAULT
false
; // RULES
)
>>> Result
; // InheritsFrom
...
ARRAY FUNCTION .filterNil>
ARRAY IN anArray
anArray
.filter> ( IsNil ! )
>>> Result
; // .filterNil>
...
ARRAY FUNCTION .filterMixIns>
ARRAY IN anArray
anArray
.filter> ( .IsMixIn ! )
// .filter> ( .IsPureMixIn ! )
>>> Result
; // .filterMixIns>
...
ModelElement elem_func FirstOperation
Cached:
(
Self .Operations .filter> ( .IsLocalMethod ! ) .FirstElement
)
>>> Result
; // FirstOperation
...
elem_iterator ForClassImplements
Self .Implements
.filter> .IsClassImplementable
>>> Result
; // ForClassImplements
...
elem_iterator PropertyKeys
RULES
( Self .Parent .IsTestClass )
(
[ Self .Parent .EffectiveType .SelfParam ]
.join>
( Self .Attributes )
)
DEFAULT
( Self .Attributes )
; // RULES
.filter> ( .IsControlPrim ! )
>>> Result
; // PropertyKeys
...
elem_iterator GlobalVars
RULES
( Self .IsClassOrMixIn )
(
Self .Attributes
.filter> ( .IsStereotype st_static::Attribute )
if ( Self .IsSingleton ) then
begin
.join> ToArray: ( Self .InstanceField )
end // ( Self .IsSingleton )
.join> ( Self .InnerGlobalVars )
)
( Self .IsUtilityPack )
(
Self .Attributes
.filter> ( .IsProperty ! )
.join> ( Self .InnerGlobalVars )
)
DEFAULT
[empty]
; // RULES
>>> Result
; // GlobalVars
...
ARRAY FUNCTION .mapToTarget>
ARRAY IN anArray
anArray .map> .Target >>> Result
; // .mapToTarget>
...
elem_proc OutUses:
STRING IN aUCPrefix
^ IN aUsed
^ IN aLambda
^ IN anItemTransform
ARRAY VAR l_Used
aUsed DO >>> l_Used
ARRAY FUNCTION .filterUsed>
ARRAY IN anArray
anArray
.filter> (
IN anItem
anItem .UnitName >>> anItem
if ( anItem .NotInArray: l_Used ) then
begin
anItem .AddToArray: l_Used
true
end
else
begin
false
end
) >>> Result
; // .filterUsed>
'uses' .Out
VAR l_NeedComma
false >>> l_NeedComma
Indented: (
aLambda DO
.map> .UnitProducer
.filterNil>
.filterMixIns>
.filter> ( Self ?!= )
.filter> ( .UnitName Self .UnitName ?!= )
.filter> ( .UnitName 'System' ?!= )
//.map> .UnitName
.filterUsed>
.for> (
IN anItem
anItem .IfDef: ( anItem anItemTransform DO .WithComma: l_NeedComma .Out )
) // .for>
if (
( Self .IsElementProxy )
OR ( Self .UPisTrue "need UC" )
) then
begin
Self .UserCode: aUCPrefix ()
end // ( Self .IsElementProxy )
if (
( aUCPrefix 'intf_uses' == )
AND ( Self .UPisTrue "need UC in project" )
) then
begin
Self .UserCode: 'manualuses' ()
end // ( Self .IsElementProxy )
) // Indented:
';' .Out
OutLn
; // OutUses:
Откуда "ноги растут":
http://programmingmindstream.blogspot.ru/2014/01/todo_24.html
Комментариев нет:
Отправить комментарий