見出し画像

Godotに新しい辞書がやってきた

Godotエンジンに型指定できるDictionaryが追加されました。正式版(?)はまだだけど4.4 Dev2でもう使えるよ!

Before

var _defs: Dictionary = {}

# 意図しない格納ができてた
_defs[&"JumpSlash"] = SkillDef.new()
_defs[&"HeavyPunch"] = SkillCost.new() # 書き間違えに気づかない

# 型指定で取得すると型安全判定されなかった
var def: SkillDef = _defs[&"IceArrow"] # 行番号が暗くなる
var def: SkillDef = _defs[&"FireArrow"] as SkillDef # これでもダメ

After

var _defs: Dictionary[StringName, SkillDef] = {}

# 意図しない格納はエラーで教えてくれる
_defs[&"JumpSlash"] = SkillDef.new()
_defs[&"HeavyPunch"] = SkillCost.new() # 事前にエラーで教えてくれる

# 型指定で取得できる
var def: SkillDef = _defs[&"IceArrow"] # 行番号が明るいまま
var cost: SkillCost = _defs[&"FireArrow"] # 事前にエラーで教えてくれる

↓ちょっと使ってみた感じ、こんな風になってそうです。

  • KeyとValueに、自作クラスも指定可能

  • KeyとValueに、自作enumも指定可能

  • KeyとValueに、クラス内クラスも指定可能

  • 添え字(a[これ])には、Keyに指定したクラスだけでなく、その継承クラスを入れてもいい

  • RefCountedやNodeを添え字にしたときに、それが同一かどうかは、内容ではなく、同一のインスタンスかどうかで判定されているっぽい。(これは型指定とは関係ないけど)

  • keys()とvalues()が返す配列は、型の無い普通のArray。

これでまた一つGDScriptが、迷いなく書けるようになりました。やったね。


以上です~~


この記事が気に入ったらサポートをしてみませんか?