본문 바로가기
블록체인/솔리디티

[Solidity] 함수

by 발담그는블로그 2021. 12. 4.
pragma solidity ^0.4.19;

contract ZombieFactory {

    uint dnaDigits = 16;
    uint dnaModulus = 10 ** dnaDigits;

    struct Zombie {
        string name;
        uint dna;
    }

    Zombie[] public zombies;

    // 여기서 시작
    function createZombie(string _name, uint _dna) {
        
    }
}

함수 인자값은 보통 '_' 언어스코어를 변수앞에 붙여서, 전역 변수와 구별하는 것이 관례라고 한다.

 

Public / Private 함수

// public 함수
function createZombie(string _name, uint _dna) {
  zombies.push(Zombie(_name, _dna));
}

// private 함수
function _addToArray(uint _number) private {
  numbers.push(_number);
}

솔리디티의 경우 보안을 엄청 신경써야 하므로, 대다수의 함수를 private 함수로 선언하는데 private 함수는 다음 형태외 같다. 함수명 앞에 언더스코어('_')를 붙이고 뒤에 private이라고 선언해준다. 

 

함수 반환

 

 

함수제어자

함수 제어자를 통해, 함수에 접근하는 데이터를 제어할 수 있다.

view

string greeting = "What's up dog";

function sayHello() public returns (string) {
  return greeting;
}

function sayHello() public view returns (string) {}

만약, 어떤 함수가 데이터를 변경하는 행위는 하지 않고 데이터를 읽기만 한다면 view를 통해 제어할 수 있다.  

pure

function _multiply(uint a, uint b) private pure returns (uint) {
  return a * b;
}

pure는 해당 함수가 앱에서 어떠한 데이터도 접근하지 않을때 사용한다. 앱에서 읽는 것도 하지 않지만, return 값이 함수에 전달된 인자에 따라 달라질 때만 해당 제어자를 사용한다.

반응형