※この翻訳ドキュメントはスクリプトによって出力・同期されています。内容が怪しそうな場合はGitHubにissueを追加したり英語の原文の確認をお願いします。

Elif クラス

このページではElifクラスについて説明します。

このページを読み進める前に以下のページをご確認いただくと役に立つかもしれません(Elifクラスも他のデータのクラスと同じ理由で使われています):

Elif クラスの概要

Elifクラスはapyscの分岐条件用のクラスです。このクラスはPythonのビルトインのelifのキーワードと同じように動作します。

基本的な使い方

Elifクラスはwithステートメントと共に使う必要があります。また、ElifクラスはIfElifクラスのステートメントの直後にのみ使用することができます。

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

特記事項

もしIf(もしくはElif)クラスとElifクラスのステートメント間にコードを挟んだ場合エラーとなります:

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.

また、Elifのコンストラクタにて直接Booleanの値の条件値を作成したり比較表現を行うことはできません。例えば以下のコードでもエラーとなります:

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, ...):

関連資料

Elif クラスのコンストラクタのAPI

特記事項: このAPIドキュメントはドキュメントビルド用のスクリプトによって自動で生成・同期されています。そのためもしかしたらこの節の内容は前節までの内容と重複している場合があります。

[インターフェイスの構造] __init__(self, condition: Union[apysc._type.boolean.Boolean, NoneType], *, locals_: Union[Dict[str, Any], NoneType] = None, globals_: Union[Dict[str, Any], NoneType] = None) -> None


[インターフェイス概要]

else ifの分岐条件の表現を追加するためのクラスです。


[引数]

  • condition: Boolean or None

    • 判定に使われるBooleanの真偽値。

  • locals_: dict or None, default None

    • 現在のスコープの各ローカル変数。locals()関数の値を引数に指定してください。もしも指定された場合にはElifのスコープの終了時にこのインターフェイスはVariableNameMixInクラスを継承した各変数(例 : Spriteクラスなど)の値をスコープ前の状態に復元します。この設定はElifスコープ内のコードで各変数を更新したくない場合に役立ちます。

  • globals_: dict or None, default None

    • 現在のスコープの各グローバル変数。設定する場合にはglobal()関数の値をこの引数に指定してください。この設定はlocals_引数と同じように動作します。


[特記事項]

・現在apyscでは条件値をコンストラクタ内で直接作成することはできません。
・このクラスはIfElifクラスによるステートメントの直後でのみ使用することができます。


[コードサンプル]

>>> # 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
...

[関連資料]