Gidhub BE Developer

함수

2018-02-26
goodGid


pragma solidity ^0.4.0; 

contract SimpleStorage {
    uint storedData;

    function set(uint x) {
        storedData = x;
    }

    function get() constant returns (uint) {
        return storedData;
    }
    
}

함수 내부에 선언된 변수를 지역변수 (local variable)

외부에 선언된 변수를 상태 변수 (state variable)


함수의 형태

      1.함수 이름    2.입력 매개 변수      3.옵션           4.출력 매개 변수
function name   (x1, x2, ... , xN)   option returns (y1, y2, ... ,yN) {
                5.함수 내용
}

1번은 필수, 2,3,4번은 생략이 가능하다.

3번 생략시 자동으로 pulbic이 적용된다.


3.옵션에 대해 알아보자.

1. external / public / internal / private

외부 컨트랙트가

이 함수에 접근 할 수 있는지 설정할 수 있다.

이를 가시성(visibility)라 한다.

private 함수는 내부에서만

internal 함수는 내부와 상속된 컨트랙트에서 접근이 가능하다.

컨트랙트 밖에서도 접근을 가능하게 하려면

external or public을 붙이면 된다.


2. constant

함수가

컨트랙트의 상태 변수를

수정하지 않음을 보장하려면

constant를 붙여서

상수 함수(constant function)으로 선언할 수 있다.

상수 함수의 실행은 gas를 소모하지 않는다.

만약 함수에서 컨트랙트의 상태를 수정하고 싶다면,

이 옵션을 사용해서는 안된다.


3. payable

컨트랙트가 자신의 함수를 통해

다른 지갑이나 컨트랙트에서 이더를 송금받고 싶은 경우,

payable를 붙여 지불 가능 함수(payable function)로 선언해야 한다.


생성자 (Constructor)

생성자선언하려면

컨트랙트와 같은 이름의 함수를 선언하면 된다.


pragma solidity ^0.4.0; 

contract Example4 {

    uint count;
    address from;
    address to;

    function Example4(uint _count, address _from, address _to) public {
        count = _count;
        from = _from;
        to = _to;
    }
}

contract Example4Creator {
    Example4 e = new Example4(1, MyAddress, ToAddress  ,2018);
}


이렇게 생성자를 선언하면

Mist or Remix에서 컨트랙트를 생성할 때,

생성자의 입력 매개 변수를 넣어줄 수 있는

공간이 따로 생긴다.


Comments

Content