Переменные хранилища могут быть помечены как public
во время объявления:
publicName: public (String [64])
Компилятор автоматически создает функции получения для всех переменных хранилища public. Эти функции получения НЕ записаны в вашем коде, но генерируются компилятором при его компиляции.
В приведенном выше примере компилятор сгенерирует функцию с именем publicName
, которая не принимает никаких аргументов и возвращает String [64]
, значение переменной состояния publicName
. Таким образом, даже если вы не видите ни одной функции с именем publicName
, она будет сгенерирована при компиляции вашего кода.
Нам нужна переменная публичного хранилища, которая отслеживает количество покемонов, созданных в контракте.
- Создайте переменную хранилища
public
с именемtotalPokemonCount
типа ʻuint256`. - Замените ключ
0
в сопоставленииpokemonList
в функции_createPokemon
на переменная храненияtotalPokemonCount
. Не забудьте использовать переменную средыself
для доступа к переменной хранилища из функции. - В функции
_createPokemon
увеличьте значение totalPokemonCount на 1, используя переменную среды self. Чтобы код выглядел чистым, используйте арифметический оператор+=
, как показано ниже:# adds 1 to the parameter passed @external def addOne(number: uint256): # we used += to increment number by 1 number += 1