주소 : 특정 계정을 가리키는 고유 식별자. 20byte 자료형. 계약 계정 주소 및 외부 소유 계정 주소를 담을 수 있다.
매핑 : 키-값(key-value) 저장소. 제공된 키를 가지고 값을 얻어내는 데 유용하다. 데이터를 저장하고 검색하는 데 이용된다.
ex)
//userID로 유저 이름을 저장, 검색
mapping (uint => string) public userIdToName;
현재 함수를 호출한 사람 (혹은 스마트 컨트랙트)의 주소. 모든 함수에서 이용 가능한 전역 변수이다.
함수 실행 전에 참이어야 하는 특정 조건을 확인하는 데 사용한다. require를 활용하면 특정 조건이 참이 아닐 때 함수가 에러 메세지를 발생하고 실행을 멈추게 된다. 사용하지 않은 가스는 호출자에게 반환되며 상태는 원래대로 돌아간다.
ex)
function Hi(string _name) public returns (string){
require(_name = "aa");
return "Hi";
}
부모 계약(parent contract)을 상속받은 자식 계약(child contract)은 부모 계약의 모든 변수, 함수, 이벤트 등을 자신의 것처럼 사용할 수 있다.
ex)
contract a {
}
contract b is a{ //b가 a를 상속한다.
}
어떤 파일을 다른 파일로 불러오고 싶을 때 사용.
ex)
import "./a.sol";
구조체와 배열을 처리할 때는 키워드를 선언해주어야 한다.
자신이 소유하지 않은 컨트랙트와 상호작용을 하기 위해서는 인터페이스를 정의하면 된다.
상호작용하는 함수가 public이나 external로 선언되어있어야 한다.
function multipleReturns() internal returns(uint a, uint b, uint c) {
return (1, 2, 3);
}
function processMultipleReturns() external {
uint a;
uint b;
uint c;
// 다음과 같이 다수 값을 할당한다:
(a, b, c) = multipleReturns();
}
// 혹은 단 하나의 값에만 관심이 있을 경우:
function getLastReturnValue() external {
uint c;
// 다른 필드는 빈칸으로 놓기만 하면 된다:
(,,c) = multipleReturns();
}
런타임 오류
오류 처리 구문