[블체스 Part.3] 230503

이현진·2023년 5월 3일
1

BlockChain School

목록 보기
9/20

파트 쓰리 세번째 날이다!
오늘은 어제 했던 솔리디티 실습을 복습하는 것으로 시작했다.

암튼 이걸 시작으로 오전 시간 내내 복습시간을 가졌다.

음.. 리믹스랑 깃허브 연동때문에 내 벨로그가 털렸는데... 음,,,.. 일단 다른분들께 주목받아서 너무너무 부끄러웠어요.. (진짜 카메라 끄고 책상밑으로 들어갈뻔)

해리포터 학폭논란이나 자장가 가스라이팅 등의 내용을 쓰지 않아서 민서강사님한테 혼나지 않았다.
정말 쓰고싶었는데 참았다구요..ㅎ....


함수형 비교 pure, view, payable

어제 했던 거지만 복습 겸!!
두번하니까 시험에 나오지 않을까..싶다.!

pure

view

정보를 받아오긴 하는데 실질적인 값을 바꿔주지는 않음

payable (일반 public)

정보를 받아와서 값을 바꿔주는 함수
가스비


string

숫자형과 문자형 받아오기

숫자형은 어제 했던 것 처럼 uint로 받아오고,
문자형은 string으로 받아온다.

숫자형처럼 문자형을 받아오게 되면 오류가 발생한다.

그래서 string 뒤에 memory를 붙여주면 오류 없이 깔끔해진다.

(아래는 다양한 오류 유형들..)

setBasC

deploy 후에 Deployed Contracts를 보면
처음에 getB에는 value가 없다가 setBasC를 누른 후 value에 c가 들어있는 것을 볼 수 있다.

setBasC2

소문자와 대문자도 구분한다.
소문자를 받으면 소문자로 출력하고, 대문자를 받으면 대문자를 출력한다.

    function setBasC() public {
        b="c";
    }

    function setBasC2() public {
        b="C";
    }


string에는 memory를 꼭 붙여서 쓰자.!

체인에도 저장이 되니까!
calldata나 memory같은 경우는 약간 storage에 비해서 휘발성이라고 생각하면 된다.

calldata : 어딘가에 있어서 그걸 보고 쓰겠다.
어딘가에 저장되어 있는 것을 그대로 가져와서 사용!

memory : calldata에 있는거를 복사해서 가져와서 쓰겠다.


강사님께서 memory, calldata, storage 설명하시면서 좀... 이런걸 보여주시긴 하셨는데...
집중력 또 바닥나서 다른쪽 귀로 내용이 다 나갔어요
남아있는게 그림밖에없어


AB 값을 넣고 반환하는 함수

pure를 쓸 수 없는 이유 : 상태변수를 불러와야하니까! view를 사용해야함

    //a와 b에 내가 원하는 값을 넣을 수 있는 함수
    //그리고 a와 b의 값을 반환하는 함수를 각각 따로 만드세요.
    function setAB(uint _a, string memory _b) public {
        a=_a;
        b=_b;
    }

    function getAB() public view returns(uint, string memory) {
        return (a,b);
    }

bytes

선언

그냥 bytes 변수명
이렇게 선언해준다.

일단 지금은 string과 bytes는 기계적으로 뒤에 memory를 붙여주라고 하셨다.
너무 깊게 들어가면 이해하기 어려울 것 같아서겠지...?
나도 일단은 다행이라고 생각했다...ㅎ..

오류 확인

setA 에 그냥 16을 넣으면 오류가 생긴다.

setA에 0x16 을 넣어야 정상적으로 동작하는 것을 볼 수 있다.


강사님이 빨간색으로 그림 그려주신 것 처럼 해보면
된다.

setA2

    function setA2() public{
        a="16";
    }

setA2를 보면 16을 문자열로 인식해서
getA 결과를 받을 때 ASCII 코드로 받아온다.
1과 6을 각각 받아서 0x3136 을 받아오는 것이다!

학교다닐때 교수님이 아스키코드 알려주실 때 뭔소린가 하고 그냥 a부터z 코드만 외우고 그냥 뭐..그랬었는데....
추억이다ㅎㅎㅎㅎㅎㅎㅎ

setA3

    function setA3(string memory _a) public{
        a=bytes(_a);
    }

여기에서도 a는 문자열로 받아오기 때문에 getA에서 아스키코드로 받아온다!


제곱, 세제곱,.. 만들기


나는 사실 처음에 Square 함수를 만들때 연산자 ^로 만들었는데 결과가 이상하게 나왔다.

그래서 저게 무슨 연산자인가 찾아봤는데
XOR 이었다.
대학교 1학년때 진짜 미친듯이 공부했었던 연산자들.....
Exclusive,,,,,
우리의 진짜배기 교수님 미스터장.. 정말,, 그때 배운게 나올줄 몰랐습니다 교수님 최고에요


오늘은 수업이 4시에 끝나고 스터디가 있는 날이다!
열정사자 보라팀이 끝나고 새로운 스터디가 열린다.
오늘 두시간동안의 액티비티를 통해 스터디팀이 정해진다고 한다!!

오늘도 고생했다. 오늘은 복습 조금만 하고 내일 열심히 달려야겠다ㅎ!!
내일도 화이팅🔥🔥🔥

profile
https://github.com/lhjbg0821

0개의 댓글