Python

用 vyper 中的值初始化 hashmap

  • April 2, 2022

在 Vyper 中使用 hashmaps 時,我們可以直接用多個值初始化它嗎?

我目前正在建構子中遍歷一個單獨的地址列表。

allowedAdmins: HashMap[address, bool]
allowedAdminsList: address[3] = [0xADD1E55E11, 0xADD2E55E22, 0xADD3E55E33]

@external
def __init__():
   for _admin in self.allowedAdminsList:
       self.allowedAdmins[_admin] = True

但是如果可能的話,是否可以在一行中初始化它。就像是

allowedAdmins: HashMap[address, bool] = [(0xADD1E55E11, True),
                                        (0xADD2E55E22, True),
                                        (0xADD3E55E33, True)]

在 vyper 中無法初始化儲存變數。在這種情況下,您可以在__init__()函式中初始化 hashmap,當您第一次嘗試部署智能合約時,此函式將使用您的值初始化 hashmap。

文件是這樣說的:

對於儲存變數(在模組範圍內聲明),不能設置初始值

更多資訊在這裡

引用自:https://ethereum.stackexchange.com/questions/125261