Incognito Project

[Incognito Project] 솔리디티 문법 02 - 함수

이유갬 2022. 9. 24. 17:35

1. 함수

- function 이라는 키워드를 이용하여 함수를 정의할 수 있음.

function retrieve() public view returns (uint256){
        return favoriteNumber;
    }

1-1. 함수의 접근자 지정

public & private :

- 함수는 기본적으로 public 속성으로 선언됨.

- private 을 붙이면 컨트랙트의 외부에서 함수 호출 불가능함. (FundMe.sol에서 Fund() 함수 접근 지정자가 public 인 이유인듯)

- 접근 지정자는 매개변수 바로 다음에 정의함.

external & internal :

- internal 은 private 과 유사하나 자식 컨트랙트는 사용 가능함.

- external 은 컨트랙트의 외부에서만 호출됨. (public 과 뭐가 다른걸까?)

 

1-2. 함수의 반환값 지정

- returns 키워드를 이용하여 반환값의 자료형을 명시해야함.

 

1-3. 함수 제어자 지정

- 컨트랙트의 변수를 읽고 쓰는지 여부에 따라 제어자를 지정함.

- view : 변수를 읽기만 할 때

- pure : 변수를 읽지도 쓰지도 않을 때

- 위치는 접근자와 리턴 사이에 있음.

 

2. require 키워드

require(block.timestamp < finishTime, "This campaign is over");

- 조건이 참이면 함수를 실행하고, 거짓이면 함수를 실행하지 않고 에러를 출력함.

 

3. 값의 반환

function multipleReturn() public pure returns (
  uint a;
  uint b;
  uint c;
) {
  return (10, 20, 30);
}

// 세 번째 리턴값만을 추출하고자 할 경우
uint number;
(, , number) = multipleReturn(); // number: 30

- 값을 반환 할 때 한번에 여러 값을 반환할 수 있음.

언제 public 을 쓰고 언제 external 을 쓰는지 궁금함, 보안과 관련이 되어 있을까?