Package com.singularsys.jep.misc.functions

# Class SwitchNonLazy

java.lang.Object
com.singularsys.jep.functions.PostfixMathCommand
com.singularsys.jep.functions.NaryFunction
com.singularsys.jep.misc.functions.SwitchNonLazy

All Implemented Interfaces:
  `PostfixMathCommandI`, `Serializable`

public class SwitchNonLazy extends NaryFunction
A switch statement. The argument is selected based on the integer value of the first argument for example `switch(2,5,6,7,8)` will return 6. The first argument must be an exact integer.

This is the non-lazy version of the function, all arguments are evaluated before the switch statement is executed. See `Switch` for the lazy evaluation version.

Since:
  Jep 4.1
Author:
  Richard Morris
See Also:
  - `Case`
  - Serialized Form

- ## Nested Class Summary

  Nested Classes
  Modifier and Type
  Class
  Description
  `static enum`
  `SwitchNonLazy.NullBehaviour`
  Action to take if first argument is null.

- ## Field Summary

  ### Fields inherited from class com.singularsys.jep.functions.PostfixMathCommand

  `curNumberOfParameters, description, name, NaN, numberOfParameters`

- ## Constructor Summary

  Constructors
  Constructor
  Description
  `SwitchNonLazy()`
  Default switch statement.
  `SwitchNonLazy(SwitchNonLazy.NullBehaviour nullBehaviour)`
  Switch function with defined null behaviour.

- ## Method Summary

  Modifier and Type
  Method
  Description
  `boolean`
  `checkNumberOfParameters(int n)`
  Must have at least 2 parameters.
  `Object`
  `eval(Object[] args)`
  Evaluate the function
  `SwitchNonLazy.NullBehaviour`
  `getNullBehaviour()`
  Behaviour when passed zero arguments.

  ### Methods inherited from class com.singularsys.jep.functions.NaryFunction

  `run`

  ### Methods inherited from class com.singularsys.jep.functions.PostfixMathCommand

  `asArray, asBool, asDouble, asInt, asLong, asStrictInt, asString, asType, getDescription, getDescription, getDescriptionWithType, getName, getNumberOfParameters, setCurNumberOfParameters, setDescription, setName, toString, toString`

  ### Methods inherited from class java.lang.Object

  `clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait`

- ## Constructor Details

  - ### SwitchNonLazy

    public SwitchNonLazy()
    Default switch statement. Exceptions are thrown if first argument is null.

  - ### SwitchNonLazy

    public SwitchNonLazy(SwitchNonLazy.NullBehaviour nullBehaviour)
    Switch function with defined null behaviour.
    Parameters:
      `nullBehaviour` - action to take if first argument is null.
    Since:
      Jep 3.5

- ## Method Details

  - ### getNullBehaviour

    public SwitchNonLazy.NullBehaviour getNullBehaviour()
    Behaviour when passed zero arguments.
    Returns:
      code indicating behaviour type
    Since:
      Jep 3.5

  - ### checkNumberOfParameters

    public boolean checkNumberOfParameters(int n)
    Must have at least 2 parameters.
    Specified by:
      `checkNumberOfParameters` in interface `PostfixMathCommandI`
    Overrides:
      `checkNumberOfParameters` in class `PostfixMathCommand`
    Parameters:
      `n` - number of parameters function will be called with.
    Returns:
      false if an illegal number of parameters is supplied, true otherwise.

  - ### eval

    public Object eval(Object[] args) throws EvaluationException
    Description copied from class: `NaryFunction`
    Evaluate the function
    Specified by:
      `eval` in class `NaryFunction`
    Parameters:
      `args` - arguments to the function
    Returns:
      value returned by the function
    Throws:
      `EvaluationException` - if the calculation cannot be performed