… too fat.
Surely writing code like this gets frustrating very fast. I want my lambdas!!
{ Lovely, isn't it? } LGroupJoined := LOwners.Op.GroupJoin<TPet, TPerson, TOwnedPets>(LPets, function(Arg1: TPerson): TPerson begin Result := Arg1; end, function(Arg1: TPet): TPerson begin Result := Arg1.FOwner; end, function(Arg1: TPerson; Arg2: ISequence<TPet>): TOwnedPets begin Result.FOwnerName := Format('%s, %s', [Arg1.FLast, Arg1.FFirst]); Result.FPetNames := Arg2.Op.Select<String>( function(Arg1: TPet): String begin Result := Arg1.FName; end); end ); for LOwnedPets in LGroupJoined do begin WriteLn('Person ', LOwnedPets.FOwnerName, ' owns: '); Write(' '); for LName in LOwnedPets.FPetNames do Write(LName, ', '); WriteLn; end;
In other news, there is a working version of Collections 2.0 in the SVN. Most of the changes were sitting on my hard drive for a year now. I just made sure that the last touches are applied and that this version compiles in Delphi XE2. I have also applied a few fixes that enabled the package to work in 64 bit environment.
Be advised: The unit tests are completely broken. I have no short term plans on making them work. The amount of time needed for that is staggering. I am currently focused on features so I won’t touch them in a while.
P.S. I have to say that I am very disappointed with the quality of the IDE when generics are involved. I had countless unpleasant problems in the past but was expecting things to get better in XE2. Not so. My IDE froze countless time when trying to edit some source files. Whenever I would type a “.” or a “(” it would be gone for good. This makes me wonder whether Collections will be usable at all to you guys. With such buggy support I can predict only crashes. And don’t get me started on the EXE size …