상세 컨텐츠

본문 제목

Solidity - Structs

Programming Language/Solidity

by Yongari 2022. 12. 25. 10:53

본문

 

 

 

You can define your own type by creating a struct.

Struct를 만들어서 사용자 고유의 유형을 만들 수 있습니다.(정의할 수 있습니다.)

 

They are useful for grouping together related data.

관련 데이터를 그룹화하는 데 유용합니다.

 

Structs can be declared outside of a contract and imported in another contract.
Struct는 계약 외부에서 선언하고 다른 계약으로 가져올 수 있습니다.

 

// SPDX-License-Identifier: MIT
pragma solidity ^0.8.13;

contract Todos {
    struct Todo {
        string text;
        bool completed;
    }

    // An array of 'Todo' structs
    Todo[] public todos;

    function create(string calldata _text) public {
        // 3 ways to initialize a struct
        // - calling it like a function
        todos.push(Todo(_text, false));

        // key value mapping
        todos.push(Todo({text: _text, completed: false}));

        // initialize an empty struct and then update it
        Todo memory todo;
        todo.text = _text;
        // todo.completed initialized to false

        todos.push(todo);
    }

    // Solidity automatically created a getter for 'todos' so
    // you don't actually need this function.
    function get(uint _index) public view returns (string memory text, bool completed) {
        Todo storage todo = todos[_index];
        return (todo.text, todo.completed);
    }

    // update text
    function updateText(uint _index, string calldata _text) public {
        Todo storage todo = todos[_index];
        todo.text = _text;
    }

    // update completed
    function toggleCompleted(uint _index) public {
        Todo storage todo = todos[_index];
        todo.completed = !todo.completed;
    }
}

 

Declaring and importing Struct
구조물 선언 및 가져오기

File that the struct is declared in
구조가 선언되는 파일

 

// SPDX-License-Identifier: MIT
pragma solidity ^0.8.13;
// This is saved 'StructDeclaration.sol'

struct Todo {
    string text;
    bool completed;
}

 

File that imports the struct above

위의 struct를 파일로 가져오는 방법.

 

// SPDX-License-Identifier: MIT
pragma solidity ^0.8.13;

import "./StructDeclaration.sol";

contract Todos {
    // An array of 'Todo' structs
    Todo[] public todos;
}

Try on Remix

 

Remix - Ethereum IDE

 

remix.ethereum.org

 

출처 : https://solidity-by-example.org/structs/

'Programming Language > Solidity' 카테고리의 다른 글

Solidity - Fuction  (0) 2022.12.26
Solidity - Data Locations  (0) 2022.12.25
Solidity - Enum  (0) 2022.12.25
Solidity - Array  (0) 2022.12.25
Solidity - Mapping  (0) 2022.12.23

관련글 더보기