[TIL] 2023-05-03 DAY33
오늘 배운것들
- 저번시간 복습(간단한 계산기 코드 짜보기)
- 숫자형 변수, 문자형 변수
각종 팁
회고
- 문제예시: 2개의 Input값을 가지고 1개의 output값을 가지는 4개의 함수를 만드시오. 각각의 함수는 더하기, 빼기, 곱하기, 나누기(몫과 나머지 반환)를 실행합니다.
✔ write -> public: 체인에 write해서 정보를 바꿈(유료) - Storage
✔ read -> view: read만 하는애들(무료) - Memory
✔ x -> pure: read 조차 안하는 애들(무료) - Calldata
상태변수들은 스토리지에 저장되는데 블록체인에서 스토리지는 블록을 뜻한다.

-> 함수에서 지역변수 문자형을 받으려면 memory나 calldata를 넣어줘야한다.
// SPDX-License-Identifier: GPL-3.0
pragma solidity ^0.8.18;
/*
실습 가이드
1. 0x16을 넣고 setA 실행하기
2. getA -> 0x16 결과 확인
3. setA2
4. getA -> 0x3136 결과 확인
5. abc를 넣고 setA3 실행하기
6. getA -> 0x616263 결과 확인
*/
contract BYTES {
bytes a;
function setA(bytes memory _a) public {
a = _a;
}
function setA2() public {
a = "16"; // 문자열이기 때문에 아스키코드로 출력 -> 0x3136
}
function setA3(string memory _a) public {
a = bytes(_a);
}
function getA() public view returns(bytes memory) {
return a; // 결과값이 16진수 인 것 확인
}
// 퀴즈: 입력한 수의 제곱을 반환해주는 함수를 구현하세요.
function wprhq(uint b) public pure returns(uint) {
return b**2;
}
}
초기 init을 할 때 어떤 자료형을 갖고 있는지 확인하는 것 중요하다.
상태변수를 변화시키는 것은 무겁고 가격이 비쌈(public)
상태변수를 변화시키지 않는 함수는 상대적으로 가격이 싼 view, pure를 사용.
... 팀 빌딩 시간