[#2] Solidity 변수, 함수

rnrnrnr·2022년 10월 13일
0
post-thumbnail

Solidity 변수, 함수

솔리디티는 상태변수, 전역변수, 지역변수가 존재한다

  • 상태변수는 이더리움 블록체인에 기록되는 변수로 컨트랙트에 영구적으로 저장된다

부호 없는 정수 unint

contract HelloWorld{
	uint num = 100;
}
  • 음수가 사용 되지 않을 때 사용한다

부호 있는 정수 int

contract Helloworld{
	int num = -100;
}
  • 음수도 사용 될 경우 int를 사용한다

모든 변수는 기본값이 있다 따라서 Javascript혹은 다른 언어 처럼 'null' 'undefind'값이 없다

bool

contract Helloworld{
	bool num = true;
}
  • bool로 선언된 변수는 true 혹은 false를 갖는다.

bytes

contract Helloworld{
	bytes num = 'abc;
}
  • 고정바이트는 bytes1~bytes32까지 선언한다.

string

contract Helloworld{
	string num = 'kuhell';
}
  • 문자열 타입

address

contract Helloworld{
	address num = 0x1234...;
}
  • 주소 타입 유저가 암호화페를 주고받는 주소, 배포된 스마트컨트랙트 주소

함수

  • 솔리디티에서는 function키워드를 활용해서 함수를 만들 수 있다

함수의 정의 방법

  • 매개변수를 받지 않으면서 출력값도 없는 기본 함수

  • 매개변수를 받는 함수

  • 두 개 이상의 매개변수를 가진 함수

  • 값을 반환하는 함수

함수의 접근자 지정하기

  • 접근 지정자는 매개변수 다음에 지정한다
pragma solidity >=0.7.0 <0.9.0;

contract basic_2 {
    //  매개 변수를 받지 않으면서 출력값도 없는 기본 함수
    uint256 public a = 7;

    function example_1() public {
        a = 14;
    }
 }

private

  • private를 붙이면 컨트랙트의 외부에서는 함수를 호출할 수 없다.

public

  • 기본적인 지정다는 public속성으로 선언된다

internal

  • private과 비슷하다 하지만 상속을 받은 컨트랙트 에서는 함수를 사용할 수 있게 한다

external

  • 컨트랙트의 외부에서만 호출될 수 있다.

returns

  • 함수가 반환하는 타입은 returns라는 키워드를 통해 명시적으로 드러나야 한다
contract basic_2 {
  uint private number = 0;

  function numberPlus() internal {
    number++;
  }
}

contract basic_3 is basic_2 {
  uint private number_2 = 0;

  function numberP() public returns (string) {
    number_2++;
    // numberPlus 함수가 internal로 선언되었기 때문에 자식 컨트랙트에서 호출이 가능
    numberPlus();
  }
}

함수 제어자 지정하기

  • 컨트랙트의 변수를 읽고 쓰는지 여부에 따라 제어자를 지정한다.

  • 제어자는 리턴 타입과 접근자 사이에 위치하게 됩니다.

view

  • 컨트랙트의 변수를 읽기만 할 때

pure

  • 컨트랙트의 변수를 읽지도, 쓰지도 않을 때
profile
rnrnrnr

0개의 댓글