PhixFlow Help

Skip to end of metadata
Go to start of metadata

You are viewing an old version of this page. View the current version.

Compare with Current View Page History

« Previous Version 4 Next »



Function: break()

Within a do() or forEach() function break() causes the do() or forEach() functions to stop immediately and return a _NULL value. $-variables in the environment of the forEach() or do() that were in scope directly before break() was called will still be available after the call to break(). 

If used outside of a do() or forEach() function then break() will cause the analysis for the Stream Set to stop as though a stop() function was called (but will produce an error message rather than a warning message). No records will be saved for that Stream Set.

Syntax

break()

Examples


do(
   $outputString = "Can't find Wally..."
   
   forEach($manager, $managersList
   	  
	  if($manager = "Wally",
   	     do(
		    $outputString "Found Wally!"
   	        break()
		 )
   	  )
   ),
   
   //output the result
   $outputString
)   

Here, forEach is used to iterate over a list of manager names until "Wally" is found, at which point we can stop looking. Used in a string-valued field on a stream, this would output the value "Found Wally!" into the stream record in that field.

Note how $outputString is still available after the call to break() has been made.

The above (contrived, see included() or subset() for a more practical solution) example shows how break() can be useful when iterating over lists, if you don't need knowledge of all of the elements.


forEach( $prefix, lookup.prefixes, 

   if( stringLength($prefix) > 20, 
      do ( 
         debug("Stopping because prefix > 20"), 
         break() 
      ) 
   ), 

   $highest = $prefix 
)

In the above expression the forEach() function will check each prefix in turn until it finds a prefix length greater than 20 at which point a debug message will be printed out to the log and break() will be called which causes the loop to stop processing.

Note that the call to break() exits both the (inner) do() routine, and the (outer) forEach() - but not the current stream processing cycle.

See Also

  • No labels