앞에서 작성한 Storage.sol은 변수에 값을 하나밖에 저장하지 못했다.
이번 예제에서는 데이터베이스 테이블 처럼 저장하는 예제를 해보자.
이름과 연봉을 저장하는 salary라는 변수를 다음과 같이 선언한다.
pragma solidity ^0.4.0;
contract SalaryStorage {
mapping(string => uint) salary;
function set(string name, uint amount) public {
salary[name] = amount;
}
function get(string name) public constant returns (uint) {
return salary[name];
}
}
여기서 처음보는 mapping이라는 선언인데 이는 key-value 쌍으로 데이터를 저장하겠다는 것이다.
예제에서는 문자열을 키로하고 자연수를 값으로 하는 salary라는 변수를 정의한다.
get과 set은 파라미터와 값을 읽어오는 부분만 수정하였을 뿐 바뀐 것이 없다.
자 SalaryStorage을 실행해보자.
set에 "홍길동", 1200 이라고 입력하고 set 버튼을 클릭하여 값을 저장한다.
그 다음 get에서 "홍길동"을 매개변수로 입력하고 get버튼을 클릭해보자.
1200이라는 값이 나오는가?
"심청이",1300
"돌쇠",1500
.....
계속 값을 넣고 처음에 입력한 "홍길동"은 계속해서 1200이라는 값을 읽어오는지 실행해보기 바란다.