[fpc-pascal] Traits Proposal

Martin Frb lazarus at mfriebe.de
Thu Feb 11 05:05:07 CET 2021


On 11/02/2021 04:20, Ryan Joseph via fpc-pascal wrote:
>
>> On Feb 10, 2021, at 7:47 PM, Martin Frb via fpc-pascal <fpc-pascal at lists.freepascal.org> wrote:
>>
>> I understand it is for conflict resolution only. But see my example => as soon as you need to repeat a trait with just a change in name, you always need conflict resolution.
> Please post the code snippet again. I'm not sure I understand what you're saying.

TEmployeList = trait
   function  FindByUnallocateWorkTime: TEmploye;
   // other functions/members
end;

TCompany = class
end;

Now the company could have Engineers and Designers. It needs to lists....
But the trait can obviously only be added once.
Yet no-one wants to copy and paste the trait to create a 2nd verson

Maybe Something like  (aliasing / no need to copy implementation)
TDesignerList = trait(TEmployeList)
   function  FindDesigerByUnallocateWorkTime: TEmploye; aliases 
FindByUnallocateWorkTime;  // no body /just a name replacement
   // and the others
end;

===>
TCompany = class
   _TraitDesigner: TDesignerList ;
   _TraitEngeneers: TEmployeList;
end;


This is clearly something that can be done later. **IF** the design is 
chosen to allow for it.




More information about the fpc-pascal mailing list