> On Apr 25, 2018, at 3:22 PM, Marco van de Voort <mar...@stack.nl> wrote:
> 
> I think if you want to pursue this, you must be much more concrete. Both the
> benefits and the potential pitfalls.

What are the potential pitfalls? Sven pointed out passing around pointers but 
don’t we know better than this since we’re using Pascal and know how memory 
works? If a function takes a class as a parameter don’t you know if the 
function is going to store it for later or not? Even if the class is on the 
heap I don’t just pass it another function and then forget about (creating a 
leak) or clean it up immediately because I think the function owns it now.

It’s basically like doing this right? I do this often to prevent copying but I 
just learned this year about the “constref” keyword which cleans up the @ 
symbol (another small optimization which I really appreciate being added).

var
  rec: TSomeRec;
begin   
  DoThis(@rec); 
end;

I know DoThis isn’t going to keep the pointer alive for later or I would never 
do this. Since the keyword is an explicit opt-in I assume the programmer really 
does know they’re doing because they are 100% certain they want the class to 
only exist for the lifetime of the scope.

In fact adding the keyword is like an explicit contract to the compiler that 
you INSIST the class be destroyed at the end of the scope. That’s the entire 
purpose of it, eg. “kill me at the end of scope so I don’t have to do this 
myself later”. :) If the programmer was smart enough to tell the compiler that 
we can assume they won’t be stupid and pass it around to some random function 
they don’t trust.

Regards,
        Ryan Joseph

_______________________________________________
fpc-pascal maillist  -  fpc-pascal@lists.freepascal.org
http://lists.freepascal.org/cgi-bin/mailman/listinfo/fpc-pascal

Reply via email to