User Tools

Site Tools


groimp-platform:xl-lambda

Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Both sides previous revisionPrevious revision
Next revision
Previous revision
groimp-platform:xl-lambda [2025/01/23 17:01] – [In-line Lambda functions] Timgroimp-platform:xl-lambda [2025/01/24 08:12] (current) – [In-line Lambda functions] Tim
Line 84: Line 84:
   * Variable assignment/change   * Variable assignment/change
   * XL context query   * XL context query
-  * Elvis operator 
   * Java/RGG functions   * Java/RGG functions
 +  * Ternary conditional operator
  
 ==== Variable handling ==== ==== Variable handling ====
Line 93: Line 93:
 int a = (int i=1,i++,i*3); int a = (int i=1,i++,i*3);
 </code>  </code> 
 +The variable i stays in the scope of the lambda expression and can be used by the two following expressions but not outside of the brackets. 
 +
 +==== XL Context queries ====
 +
 +XL context queries e.g. ''%%(*F*)%%'' (loop over all F) can be used either access a field of each of the queried nodes directly (e.g. ''%%(*F*).length%%'') or to create query variables (e.g. ''%%(*f:F*)%%'').
 +
 +For example ''%%((*f:F*),f.length/f.diameter)%%'' would loop over each F and return the ratio of length to diameter. The result can then be used the same way as ''%%(*F*).length%%'', e.g. with the [[groimp-platform:xl-builtin-methods|Analytical Operators]].
 +
 +It is also possible to create several query variables, here for the average change in length from one F to the next F:
 +<code java>
 +float m =mean(((*f1:F > f2:F*),f2.length/f1.length));
 +</code>
 +
 +
 +This can be combined with any other expression, yet it is important to keep in mind that the expressions on the right of the context query are repeated for each found pattern!
 +Therefore ''%%(int i=0,i++,(*F*),i*=2)%%'' and ''%%(int i=0,(*F*),i++,i*=2)%%'' would have different values, because in the first one ''i++'' is only called once and in the second one its called for every F in the scene.
 +
 +==== Ternary conditional operator ====
 +
 +An Ternary conditional operator is in simple terms a inline if else expression, using the following syntax  to write for instance: if x then b else c with  ''a ? b : c''. With a being a boolean condition and b and c being expressions.  
 +
  
  
groimp-platform/xl-lambda.1737648099.txt.gz · Last modified: 2025/01/23 17:01 by Tim