Elif class¶
This page explains the Elif class.
Before reading on, maybe it is helpful to read the following page (the apysc uses the Elif class for the same reason as each other data type):
What is the Elif class?¶
The Elif class is the apysc branch instruction class. It behaves like the Python built-in elif keyword.
Basic usage¶
The Elif class requires using the with statement. Also, The Elif class statement is only acceptable to implement right after the If or Elif classes statement.
import apysc as ap
ap.Stage()
int_1: ap.Int = ap.Int(10)
condition_1: ap.Boolean = ap.Boolean(False)
condition_2: ap.Boolean = ap.Boolean(True)
with ap.If(condition_1):
    int_1 += 20
with ap.Elif(condition_2):
    int_1 += 30
Notes¶
If you insert the code between the If (or Elif) and Elif statements, then it raises exceptions:
import apysc as ap
ap.Stage()
int_1: ap.Int = ap.Int(10)
condition_1: ap.Boolean = ap.Boolean(False)
condition_2: ap.Boolean = ap.Boolean(True)
with ap.If(condition_1):
    int_1 += 20
# Code inserting between the `If` and `Elif` will raise an exception.
int_2: ap.Int = ap.Int(30)
with ap.Elif(condition_2):
    int_1 += 30
ValueError: Elif interface can only use right after If or Elif interfaces.
Also, you can’t create the condition (Boolean value) at the Elif constructor position (the same goes for the comparison operators), for instance:
import apysc as ap
ap.Stage()
int_1: ap.Int = ap.Int(10)
condition_1: ap.Boolean = ap.Boolean(False)
condition_2: ap.Boolean = ap.Boolean(True)
with ap.If(condition_1):
    int_1 += 20
with ap.Elif(int_1 == 10):
    int_1 += 30
ValueError: Elif interface can only use right after If or Elif interfaces.
Maybe you are using Int or String, or anything-else comparison expression at Elif constructor (e.g., `with Elif(any_value == 10, ...):`).
Currently, that specifying expression directly is not supported, so please define conditions separately as follows:
condition: Boolean = any_value == 10
...
with Elif(condition, ...):
See also¶
Elif constructor API¶
Note: the document build script generates and updates this API document section automatically. Maybe this section is duplicated compared with previous sections.
[Interface signature] __init__(self, condition: Union[apysc._type.boolean.Boolean, NoneType], *, locals_: Union[Dict[str, Any], NoneType] = None, globals_: Union[Dict[str, Any], NoneType] = None) -> None
[Interface summary]
A class to append the else if branch instruction expression.
[Parameters]
condition: Boolean or NoneBoolean value to be used for judgment.
locals_: dict or None, default NoneCurrent scope’s local variables. Set locals() value to this argument. If specified, this interface reverts all local scope VariableNameMixIn variables (like Int, Sprite) at the end of an
Elifscope. This setting is useful when you don’t want to update each variable by implementing theElifscope.
globals_: dict or None, default NoneCurrent scope’s global variables. Set globals() value to this argument. This setting works the same way as the locals_ argument.
[Notes]
・Currently the apysc can not initialize condition value in the constructor. 
 ・You can only use this class immediately after the If or Elif statement.
[Examples]
>>> # You can avoid notes exception by predefining condition
>>> # value, as follows:
>>> import apysc as ap
>>> any_value: ap.Int = ap.Int(10)
>>> condition_1: ap.Boolean = any_value >= 10
>>> condition_2: ap.Boolean = any_value >= 5
>>> with ap.If(condition_1):
...     # Do something here
...     pass
...
>>> with ap.Elif(condition_2):
...     # Do something else here
...     pass
...
[References]