어느 언어에서든 중요한 function을 정의하고 쓰는 법을 배워 볼게요.
1. Parameter 와 Retrun 값이 없는 function 정의
function 이름 () public { // (public, private, internal, external) 변경가능.
// 내용
}
funtion을 정의하는것은 매우 간단해요, 특별한점은 public 과 같은 접근제어자를 함수명 뒤에 써준다는 것 입니다.
접근제어자는 public, private, internal, external 이 있어요.
오늘은 간단하게 public만 써서 해볼게요.
다음 강의에서 모든 제어자들을 하나씩 다루어 보아요.
인제 정의하는 법을 배웠으니, 예시로 function을 정의 해볼게요.
// SPDX-License-Identifier: GPL-3.0
pragma solidity >=0.7.0 <0.9.0;
contract Lec4 {
uint256 public a = 3;
function changeA() public{
a =5;
}
}
위에 예시가 있듯이, a 라는 변수는 3을 갖고 있습니다.
그러나 changeA()라는 함수를 실행시키시면 a는 5가 됩니다.
그러면 인제, 조금 더 나아가서 changeA를 약간 조작하여, 저희가 원하는 값을 넣어서 변경 해볼게요.
2. Parameter는 있고, Retrun 값이 없는 function 정의
function 이름 (받고싶은 타입 변수명 ) public {
// 내용
}
ex)
function 이름 (uint 256 _value) public {
// 내용
}
1 번과 달라진점은 uint256 _value 라는 부분인데요.
이뜻은 uin256 타입으 파라미터를 받겠다 입니다.
더 나아가서, type 은 여러가지를 쓸수가 있겠죠 예를들어, byte, string, address 등등이 있죠
// SPDX-License-Identifier: GPL-3.0
pragma solidity >=0.7.0 <0.9.0;
contract Lec4 {
uint256 public a = 3;
function changeA(uint256 _value) public{
a =_value;
}
}
인제 changeA를 실행할때마다, _value의 파라미터 값을 넣어 주어야합니다.
이 파라미터는 a에 대입이 되어 값이 변경 된답니다.
만약에 2 개 이상의 파라미터가 필요하시다면,
function changeA(uint256 _value1, uint256 _value2) public{
a =_value;
}
위와 같은 식으로 이어 붙여 주시면 되요.
3. Parameter는 있고, Retrun 값이 있는 function 정의
function 이름 (받고싶은 타입 변수명 ) public returns(반환하고자 하는 type) {
// 내용
}
ex)
function 이름 (uint 256 _value) public returns(uint256) {
// 내용
}
returns에 (uint256)이 있으니, uint256만 반환한다라는 뜻입니다.
여기서 주의해야 할 점은, 변수명이 없고 타입만 써주시면 됩니다.
// SPDX-License-Identifier: GPL-3.0
pragma solidity >=0.7.0 <0.9.0;
contract Lec4 {
uint256 public a = 3;
function changeA(uint256 _value) public returns(uint256){
a =_value;
return a;
}
}
위와 같이 써주신다면, changeA 함수가 실행될때,
_value의 파라미터 값을 받고
a 변수에 _value 파라미터가 대입된후
a 값이 리턴됩니다.
물론 a의 값은 uint256 타입입니다.
밑에 비디오 참고 해주세요