пятница, 22 апреля 2016 г.

#1231. Скрипты. Получение копии массива

WordAlias .KeepInStack NOP

WordAlias [[ [
%REMARK 'Начинает определение константного массива. Пока просто мапируется на неконстантный.'
WordAlias ]] ]
%REMARK 'Заканчивает определение константного массива. Пока просто мапируется на неконстантный.'

ARRAY FUNCTION array:Copy
  IN anArray
 %SUMMARY 
  'Копирует массив anArray в другой КОНСТАНТНЫЙ массив.'
  'Возвращает [nil] если исходный массив nil или пустой.'
 ; 
 RULES
  ( anArray IsNil )
   [nil]
  DEFAULT 
   (
    VAR l_Empty
    true >>> l_Empty
    [[ 
     anArray .for> ( 
      // .KeepInStack 
      // - это теперь не нужно, непустой функтор и так есть
      false >>> l_Empty
     ) // anArray .for>
    ]] 
    RULES
     l_Empty
      ( DROP [nil] )
    ; // RULES
   ) 
 ; // RULES 
 >>> Result
; // array:Copy

ARRAY FUNCTION array:CopyNotNil
  IN anArray
 %SUMMARY 
  'Копирует массив anArray в другой массив.'
  'ВСЕГДА возвращает НЕ nil.'
 ; 
 [ anArray .for> .KeepInStack ] 
 >>> Result
; // array:CopyNotNil

Комментариев нет:

Отправить комментарий