INVOKE
Revision as of 18:04, 27 April 2020 by ConvertBot (talk | contribs) (invoke a method on an object and optionally return the result)
invoke a method on an object and optionally return the result
<res=func,...,resn=funcN> - Tag/value pair or single function Keyword Only Parameters: [label] - Legacy tag for result, no longer needed [func] - Legacy tag for function, no longer needed This command invokes a method on an object accessible from the NeXtMidas framework. The function parameter is either a results entry, registry entry, or fully qualified class name (case sensitive). Multiple return and function arguments are supported of the form: invoke <res>=<func> ... <resN>=<funcN> For example: nM>invoke pi=java.lang.Math.pi deg2rad=nxm.sys.inc.Constants.DEG2RAD sets the results PI and DEG2RAD. If the function name has no parentheses, or has an empty set of parentheses, the function is assumed to be a void function. If the parentheses contain arguments, separated by parenthesis, then NeXtMidas will convert these arguments into types and search for a method with the determined types in the given order. Commands are executed from left to right, chaining of method invocations is not supported. A return value is needed to change a result inplace. Thus nM> res str "a string" nM> invoke str.toUpperCase() ! This DOES NOT CHANGE STR !!! does not upper case the string 'str', but nM> res str "a string" nM> invoke str=str.toUpperCase() ! This DOES CHANGE STR !!! changes str to "A STRING" Note: Currently it is impossible to invoke a method in Table, KeyVector, or other Keyable classes because everything goes through setKey/getKey. Examples: * To determine the sin of 1.2 nM> invoke D:x=java.lang.Math.sin(1.2) D: X = 0.9320390859672263 * To determine the pi and nM> invoke D:pi=java.lang.Math.pi * From inside a macro, clean the arguments to the macro: nM> invoke S:str=this.args.clean * To get the name of a layer: nM> plot/bg world nM> invoke name=PLOT.LAYERS.WORLD.NAME() 5S: NAME = WORLD * To get the mask value of the string X|Z nM> invoke L:maskVal=nxm.sys.lib.Parser.mask("X,Y,Z","X|Z",2) L: MASKVAL = 5 * Create a new instance of java.lang.Integer (note that "<init>" is the internal Java name for the constructor) [Since NeXtMidas 2.1.0] : nM> invoke temp=java.lang.Integer.<init>(4) this is the same as using: nM> new java.lang.Integer(4) temp Switches: /VERBOSE - Show more output See Also: NEW, SET, RESULTS