솔리디티에서 함수 호출은 항상 외부 호출자가 시작한다. 컨트랙트는 누군가가 컨트랙트의 함수를 호출할 때까지 블록체인 상에서 아무 것도 안하고 있을 것이다. 따라서 함수를 호출한 사람은 무조건 존재하고 그 사람의 주소를 코드 내에서 address 자료형으로 받을 수 있다.
사용자의 address 는 msg.sender 전역 변수로 호출할 수 있다.
(마치 자바스크립트의 window.innerwidth 같이 항상 존재하는 값이다.)
위처럼 address 자료형으로 선언한 변수가 사용자의 주소값을 가리키도록 할 수 있다.
id 변수에는 0x5B38Da6a791c568442dCfcB03FcB815f66beddC4
형태의 값이 담긴다.
타 언어의 딕셔너리, 해시 테이블 자료구조가 솔리디티에서 매핑이라는 이름으로 제공된다. 파이썬, 자바스크립트와 다르게 솔리디티의 매핑은 Key 와 Value 의 타입을 미리 선언해야 한다.
위처럼 Key 의 타입으로 address 를 사용할 수도 있다.
매핑의 값을 수정하는 방법도 다른 언어들과 비슷하다.
require 를 활용하면 특정 조건을 검사하고 그에 따라 함수 진행 여부를 결정할 수 있다. 만약 require 구문을 통과하지 못하면 에러메세지와 함께 함수가 종료된다.
division
함수는 매개변수로 _a 와 _b 를 받아서 _a 나누기 _b 를 리턴하는 함수다. 만약 _b 로 0이 들어올 것을 대비해서 require 로 중간에 체크해준다.