It strikes me that whilst it may not be the best programming form, the same thing could be done readily with a global variable?

M.

Tom Walsh wrote:
Mark Wood wrote:

I have found that there are some functional differences that Metaware has over fpc, one example is the yield() function which returns the intermediate result
of a function call.
?
'?' indeed! I am fascinated! What does yield do exactly... presumably it returns a result from the function without closing down that instance of the function? Amazing concept. I am still trying to work out how that could be useful or even how it could be used (without breaking stuff upstream).


This would be one example, a function which returns a value each time it is called. There are some scoping rules which dictate whether the yield'ed function will init or continue from the last yield point:

============== begin ====================
iterator LoopStep(Start, Stop, StepSize   : StdInt) : StdInt;
 var
   i, Answer, NumLoops : StdInt;
 begin
   if StepSize = 0 then return;
   Answer := Start;
   NumLoops := ((Stop - Start) DIV StepSize) + 1;
   for i := 1 to NumLoops do begin
     Yield(Answer);
     Answer := Answer + StepSize;
   end;
 end;
============== snip =====================


Not sure why they found this terribly useful, but I don't write financial code...

TomW



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

Reply via email to