スマートコントラクト開発時、mappingにデータが登録されているかどうかを判定する際に詰まりました。
その原因と解決策について解説していきます。
問題
Solidityではnullの概念がないため、if (userBalance[msg.sender] == null)
的なことをやろうとしてもできない。
解決方法
Solidityではnullの代わりに変数の初期値が返されるため、この特性を利用してnullチェックを行うのが正解みたいです。
各型ごとの変数の初期値
uint | 0 |
---|---|
string | “” |
address | 0x0 |
bytes | 0x |