Ну и можно написать:
а можно:
, по мне второе - читабельнее.
Это к вопросу об SQL и LINQ.
http://programmingmindstream.blogspot.ru/2016/04/1132-2.html
for i := 0 to N do if IsPredicate(Item[i]) then Process(Transform(Item[i]))
а можно:
Items .filter> IsPredicate .map> Transform .for> Process
, по мне второе - читабельнее.
Это к вопросу об SQL и LINQ.
http://programmingmindstream.blogspot.ru/2016/04/1132-2.html
ARRAY FUNCTION .mapToTarget>
ARRAY IN anArray
anArray .map> .Target >>> Result
; // .mapToTarget>
BOOLEAN elem_func IsFriend
Self .IsStereotype st_friend::Dependency
>>> Result
; // IsFriend
Self .Dependencies
.filter> .IsFriend
.mapToTarget>
.for> (
IN anItem
) // .for>
elem_iterator ChildrenEx
Cached:
(
VAR l_Children
Self .Children >>> l_Children
Self .Dependencies
.filter> .IsFriend
.mapToTarget>
.for> (
IN anItem
VAR l_Friend
anItem .FriendClass >>> l_Friend
l_Children
.join> ToArray: l_Friend
>>> l_Children
) // .for>
elem_iterator ChildrenEx
Cached:
(
VAR l_Children
Self .Children >>> l_Children
Self .Dependencies
.filter> .IsFriend
.mapToTarget>
.for> (
IN anItem
VAR l_Friend
anItem .FriendClass >>> l_Friend
if ( l_Children l_Friend .Name .HasModelElementWithName ! ) then
begin
l_Children
.join> ToArray: l_Friend
array:Copy
>>> l_Children
end // ( l_Children l_Friend .Name .HasModelElementWithName ! )
) // .for>
elem_iterator ChildrenEx
Cached:
(
VAR l_Children
Self .Children >>> l_Children
Self .Dependencies
.filter> .IsFriend
.mapToTarget>
.map> .FriendClass
.for> (
IN aFriend
if ( l_Children aFriend .Name .HasModelElementWithName ! ) then
begin
l_Children
.join> ToArray: aFriend
array:Copy
>>> l_Children
end // ( l_Children aFriend .Name .HasModelElementWithName ! )
) // .for>
Комментариев нет:
Отправить комментарий