triggon 新機能 一時的な値の更新を元に戻す

【個人ブログ】開発過程と学習記録

投稿日:

新 API で rollback() を実装しました!

これは、ラベル登録や変数・属性登録を一切せずに使えるAPI です。
with ブロック内で更新された変数や属性の値はブロックを抜けると復元されます。

drop_rate = 0.6
multiplier = 1.0

print(f"ドロップ率: {drop_rate * multiplier}") # ドロップ率: 0.6

# withブロック内で更新された値だけが復元対象
# ブロック内で新しく定義した変数・属性は対象外
with Triggon.rollback():
    multiplier = 2.0
    print(f"ドロップ率: {drop_rate * multiplier}") # ドロップ率: 1.2

# ブロックを抜けると更新された値は復元される
print(f"ドロップ率: {drop_rate * multiplier}") # ドロップ率: 0.6

引数で復元対象を指定することもできます。

class Player:
    def __init__(self):
        self.drop_rate = 0.5
        self.multiplier = 1.0
        self.bonus = 1.0

player = Player()

print(f"ドロップ率: {player.drop_rate * player.multiplier * player.bonus}") # ドロップ率: 0.5

# 指定した属性だけを復元対象にする
with Triggon.rollback("player.multiplier"):
    player.multiplier = 2.0
    player.bonus = 3.0
    print(f"ドロップ率: {player.drop_rate * player.multiplier * player.bonus}") # ドロップ率: 3.0
    
print(f"ドロップ率: {player.drop_rate * player.multiplier * player.bonus}") # ドロップ率: 1.5

この API はローカル変数の値更新にも対応しているので Python 3.13+ のみの対応です。
一時的な値更新や設定変更を行いたい場面で使えて、個人的に一番気に入っている機能です!

コメント

タイトルとURLをコピーしました