суббота, 30 января 2016 г.

#1187. Функциональщина

USES
 params.ms.dict
 core.ms.dict
 ElementsRTTI.ms.dict
 Generation.ms.dict
;

kind_NormalClass .

STRING FUNCTION ValueToKey
  ANY IN aValue
 RULES
  ( aValue IsString )
   aValue
  ( aValue IsArray )
   ( 
    aValue 
    .map> call.me
    strings:Cat
   )
  (
   ( aValue IsObj )
   AND ( aValue Is class::TtfwWord )
  ) 
   ( aValue pop:Word:Name )
  ( aValue IsIntf )
   ERROR 'Невозможно построить ключ для интерфейса' 
  DEFAULT
   ( aValue ToPrintable )
 ; // RULES
 >>> Result
; // ValueToKey

: A
 CONST UID 'xxxA'
; // A

: B
 CONST UID 'xxxB'
; // B

'a' ValueToKey .
true ValueToKey .
false ValueToKey .
[ true ] ValueToKey .
[ false ] ValueToKey .
[ false true ] ValueToKey .
[ true false ] ValueToKey .
[ 'a' true false 'b' ] ValueToKey .
@ A ValueToKey .
@ B ValueToKey .
[ @ A ] ValueToKey .
[ @ B ] ValueToKey .
[ @ A @ B ] ValueToKey .
[ @ A [ @ B ] ] ValueToKey .
[ [ @ A @ B ] ] ValueToKey .
123 ValueToKey .

@ A .UID .
@ B .UID .

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

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