4일차 - 변수 및 범위

특사-VC / 30일의 견고함


스마트 계약 개발을 배우기 위한 30일간의 Solidity 단계별 가이드.








내용물


  • Day 1 - Licenses and Pragma
  • Day 2 - Comments
  • Day 3 - Initializing Basic Contract
  • Day 4 - Variables and Scopes
  • Day 5 - Operators
  • Day 6 - Types
  • Day 7 - Functions
  • Day 8 - Loops
  • Day 9 - Decision Making
  • Day 10 - Arrays
  • Day 11 - Array Operations
  • Day 12 - Enums
  • Day 13 - Structs
  • Day 14 - Mappings
  • Day 15 - Units
  • Day 16 - Require Statement
  • Day 17 - Assert Statement
  • Day 18 - Revert Statement
  • Day 19 - Function Modifiers
  • Day 20 Constructors
  • Day 21 Single Inheritance
  • Day 22 Multi-Level Inheritance
  • Day 23 Hierarchical Inheritance
  • Day 24 Multiple Inheritance
  • Day 25 Fallback and Receive Function
  • Day 26 Events and Hashing
  • Day 27 Libraries
  • Day 28 Abstract Contract and Interface
  • Day 29 Assembly
  • Day 30 Polymorphism

  • 🧡🧡🧡 해피코딩 🧡🧡🧡

    30일간의 견고성: 라이센스 및 Pragma




    작가



    View on GitHub

    Solidity Series의 4 중 Day30입니다.
    오늘은 Solidity에서 변수와 범위에 대해 배웠습니다.

    변수



    Solidity는 세 가지 유형의 변수를 지원합니다.
  • State Variables - 값이 계약 저장소에 영구적으로 저장되는 변수.
  • Local Variables - 함수가 실행될 때까지 값이 존재하는 변수.
  • Global Variables − 블록체인에 대한 정보를 가져오는 데 사용되는 전역 네임스페이스에 특수 변수가 있습니다.


  • Solidity에서 변수 이름을 지정할 때 다음 규칙을 염두에 두십시오.
  • Solidity 예약 키워드를 변수 이름으로 사용하면 안 됩니다. 예를 들어 break 또는 boolean 변수 이름은 유효하지 않습니다.
  • Solidity 변수 이름은 숫자(0-9)로 시작하면 안 됩니다. 문자 또는 밑줄 문자로 시작해야 합니다. 예를 들어 123test는 유효하지 않은 변수 이름이지만 _123test는 유효한 이름입니다.
  • Solidity 변수 이름은 대소문자를 구분합니다. 예를 들어 이름과 이름은 서로 다른 두 변수입니다.

  • 상태 변수



    값이 계약 저장소에 영구적으로 저장되는 변수입니다.

    pragma solidity ^0.8.6;
    
    contract SolidityTest {
       uint storedData;      // State variable
       constructor() public {
          storedData = 10;   // Using State variable
       }
    }
    


    지역 변수



    값이 정의된 함수 내에서만 사용할 수 있는 변수입니다. 함수 매개변수는 항상 해당 함수에 대해 로컬입니다.

    pragma solidity ^0.8.6;
    contract SolidityTest {
       uint storedData; // State variable
       constructor() public {
          StoredData = 10;
       }
       function getResult() public view returns(uint){
          uint a = 1; // local variable
          uint b = 2;
          uint Result = a + b;
          return Result; //access the local variable
       }
    }
    

    글로벌 변수



    전역 작업 공간에 존재하며 블록체인 및 트랜잭션 속성에 대한 정보를 제공하는 특수 변수입니다.


    이름
    보고


    blockhash(uint blockNumber)는 (bytes32)를 반환합니다.
    주어진 블록의 해시 - 현재 블록을 제외한 가장 최근 256개의 블록에 대해서만 작동합니다.

    block.coinbase (지불 주소)
    현재 블록 채굴자의 주소

    블록.난이도(단위)
    현재 블록 난이도

    block.gaslimit (단위)
    현재 블록 가스 제한


    전역 변수에 대한 추가 정보here

    변수 범위



    지역 변수의 범위는 정의된 기능으로 제한되지만 상태 변수는 세 가지 유형의 범위를 가질 수 있습니다.
  • Public − 공용 상태 변수는 메시지를 통해서는 물론 내부적으로도 액세스할 수 있습니다. 공개 상태 변수의 경우 자동 getter 함수가 생성됩니다.
  • Internal − 내부 상태 변수는 이것을 사용하지 않고 현재 계약 또는 여기에서 파생된 계약에서 내부적으로만 액세스할 수 있습니다.
  • Private − 비공개 상태 변수는 현재 계약에서 내부적으로만 액세스할 수 있으며 파생된 계약에서는 정의되지 않습니다.

  • 예를 들어

    pragma solidity ^0.8.6;
    contract C {
       uint public data = 30;
       uint internal iData= 10;
    
       function x() public returns (uint) {
          data = 3; // internal access
          return data;
       }
    }
    contract Caller {
       C c = new C();
       function f() public view returns (uint) {
          return c.data(); //external access
       }
    }
    contract D is C {
       function y() public returns (uint) {
          iData = 3; // internal access
          return iData;
       }
       function getResult() public view returns(uint){
          uint a = 1; // local variable
          uint b = 2;
          uint result = a + b;
          return storedData; //access the state variable
       }
    }
    




    특사-VC / 30일의 견고함


    스마트 계약 개발을 배우기 위한 30일간의 Solidity 단계별 가이드.

    좋은 웹페이지 즐겨찾기