Parameter와 Return 값이 없는 function 정의

function 이름() public { // public, private, internal, external 변경 가능
	// 내용
}

function을 정의 할 때, 특별한 점은 public 과 같은 접근 제어라를 함수명 뒤에 선언하는 것입니다. 접근 제어자는 public, private, internal, external이 있는데, 이번에는 public만 사용합니다.

// SPDX-License-Identifier: MIT

pragma solidity >=0.7.0 <0.9.0;

contract Test {
	uint256 public a = 3;
	
	function changeA() public {
		a = 5;
	}
}

위 코드를 보면, a 라는 변수는 3을 할당 받았는데, changeA() 함수를 실행하면 a는 5를 재할당 받게 됩니다.

Parameter는 있고, Return 값이 없는 function 정의

function 이름(타입 _값) 접근 제어자 {
	// 내용
}
// SPDX-License-Identifier: MIT
pragma solidity >=0.7.0 <0.9.0;

contract Test {
    uint256 public a = 3;

    function changeA(uint256 _value) public {
        a = _value;
    }
}

처음과 달라진 점은 uint256 _value 라는 부분입니다. 이제 changeA()를 실행할 때마다, _value의 파라미터 값을 넘겨줘야 합니다.

이 파라미터는 a에 재할당이 되어 값이 변경됩니다.

만약 2개 이상의 파라미터가 필요할 경우

function changeA(uint256 _value1, uint256 _value2) public {
	a = _value;
}

Paramter도 있고, Return 값도 있는 function 정의

function 이름(타입 _값) 접근 제어자 returns (반환할 타입) {
	// 내용
}

여기서 주의해야 할 점은, 반환할 타입에 변수를 쓰지 않고 타입만 사용하는 것입니다.

// SPDX-License-Identifier: MIT
pragma solidity >=0.7.0 <0.9.0;

contract Test {
    uint256 public a = 3;

    function changeA(uint256 _value) public returns (uint256) {
        a = _value;

        return a;
    }
}

위와 같이 사용하면, changeA()가 실행될 때마다, _value의 파라미터 값을 받고 a 변수에 할당 후 리턴 됩니다.