Могу ли я сохранить структуры в сопоставлении?

Можно ли хранить структуры в Mapping или любой динамической структуре памяти в моей Solidity SmartContract?

16 голосов | спросил arodriguezdonaire 29 MarpmTue, 29 Mar 2016 15:22:19 +03002016-03-29T15:22:19+03:0003 2016, 15:22:19

2 ответа


21

Вы можете хранить структуры как значения вашего сопоставления, а не как ключ. Вот еще информация: http://solidity.readthedocs.org/en/latest /types.html#structs

struct Funder {
  address addr;
  uint amount;
}

struct Campaign {
  address beneficiary;
  uint fundingGoal;
  uint numFunders;
  uint amount;
  mapping (uint => Funder) funders;
}

uint numCampaigns;
mapping (uint => Campaign) campaigns;
ответил samurai jack 29 MarpmTue, 29 Mar 2016 15:33:23 +03002016-03-29T15:33:23+03:0003 2016, 15:33:23
3

Да, вы можете.

Например, в коде прочности ниже. Существует struct User, который имеет сопоставление friends, от address к другому struct Friend.

Затем отображается сопоставление пользователей, от address до User [обратите внимание, что User является структурой].

struct Friend {
    string name;
    string email;
    string phoneNumber;
}

struct User {
    string name;
    string email;
    uint256 balance;
    mapping (address => Friend) friends;
}

mapping (address => User) public users;

Итак, скажем, у пользователя A есть друзья B, C и D. Пользователь User может выглядеть так:

{
    name: 'A',
    email: [email],
    balance: [balance],
    friends: {
        [address_of_friend_B]: {
            name: 'B',
            email: [email],
            phoneNumber: [phoneNumber],
        },
        [address_of_friend_C]: {
            name: 'C',
            email: [email],
            phoneNumber: [phoneNumber],
        },
        [address_of_friend_D]: {
            name: 'D',
            email: [email],
            phoneNumber: [phoneNumber],
        },
    }
}

И если таких структур User существует, скажем, A, J, Z, ..., отображение users содержит все:

{
    name: 'A',
    ...
    friends: {...},

    name: 'J',
    ...
    friends: {...},

    name: 'Z',
    ...
    friends: {...},
}

Итак, вы можете хранить структуры в сопоставлении.

ответил Daniel Okwufulueze 1 stEurope/Moscowp30Europe/Moscow09bEurope/MoscowFri, 01 Sep 2017 13:42:22 +0300 2017, 13:42:22

Похожие вопросы

Популярные теги

security × 330linux × 316macos × 2827 × 268performance × 244command-line × 241sql-server × 235joomla-3.x × 222java × 189c++ × 186windows × 180cisco × 168bash × 158c# × 142gmail × 139arduino-uno × 139javascript × 134ssh × 133seo × 132mysql × 132