이유는 모르겠는데 이전에 썻던 글이 비공개로 전환이 된다..😭😭😭😭
function 함수이름(파라미터 형식1, 파라미터1, ...) {...}
or
function 함수이름(파라미터,...) returns (반환 형식) {...}
함수 접근 수준
contract exmaple {
function changeName(address account, string newName) internal {...}
function checkGas(uint256 account) private returns (bool) {...}
view 로 표시된 함수는 상태를 변경하지 않는 읽기 전용 함수.
pure 는 스토리지에서 변수를 읽거나 쓰지 않는 함수.
function checkGas(uint256 amount) private pure returns (bool) { ... }
or
function validateAccount(address account) internal view returns (bool) { ... }
payable을 선언하면 함수에서 이더를 받을 수 있다.
function getEther() payable returns (bool) {
if (msg.value === quoteFee) {
// ...
}
}
컨트랙트가 생성될 때, 생성자 함수가 실행되며 컨트랙트의 상태를 초기화 할 수 있다.
address public account;
consturctor(address _account) internal {
account = _account
}
컨트랙트 소멸
selfdestruct(컨트랙트 생성자의 주소);
함수 선언에 modifier 를 추가하여 함수를 실행하기 전, 요구 조건을 만족하는지 확인한다.
_; 을 사용하여 함수 변경자를 구분할 수 있다.
int public num = 0;
modifier changeNum {
num++; // 함수 실행 전 실행
_; // 함수 실행
num--; // 함수 실행 후 실행
function func() public changeNum {
if(num == 1) {
// do something...
}
}
상속을 사용하려면 부모 컨트랙트에 is 키워드를 지정해준다.
contract Child is Parent {...}
or
contract Child is Parent, Parent2,, {...}
if (amount > msg.value / 2 ether)
revert("Not enough Ether provided.");
reuire(
amount <= msg.value / 2 ether, // 조건이 참이면 패스, 거짓이면 출력
"Not enough Ether provided."
);
// 송금 진행
enum EvalLevel {Bad, Soso, Great}
EvalLevel kimcoding = EvalLevel.Bad
int16 kimcodingValue = int16(kimcoding); // kimcoding 열거형 값 0을 정수형으로 변환
event 또는 emit 사용
event Transfer(address from, address to, uint256 value);
function transfer(address to, address amount) {
//...
emit Transfer(msg.sender, to, amount);
}