일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
Tags
- es6
- BFS
- 이슈
- TypeScript
- 리액트
- HTML
- 이더리움
- 자바스크립트
- node.js
- kubernetes
- CSS
- docker
- 쿠버네티스
- 파이썬
- next.js
- k8s
- JavaScript
- 타입스크립트
- 알고리즘
- 웹
- AWS
- 클라우드
- 가상화
- 컴퓨터공학
- react
- 솔리디티
- 블록체인
- 백준
- 백엔드
- 프론트엔드
Archives
- Today
- Total
즐겁게, 코드
솔리디티 - 02. 기본 문법 2 (함수) 본문
1. 함수
솔리디티에서는 function
키워드를 활용해 함수를 만들 수 있습니다.
(솔리디티는 ECMAScript, 즉 자바스크립트 문법을 기반으로 설계되었다고 하는데, 아마 그 흔적 중 일부가 아닐까 싶습니다.)
pragma solidity ^0.4.19;
contract ZombieFactory {
uint a = 16;
uint b = a ** 10
struct Zombie {
string name;
uint dna;
}
Zombie[5] public zombies;
function createZombie(string _name, uint _dna) {
}
}
함수의 접근자 지정하기 1 : private & public
함수에는 private
& public
속성의 접근자를 지정할 수가 있습니다.
- 함수는 기본적으로
public
속성으로 선언됩니다. private
을 붙이면 컨트랙트의 외부에서는 함수를 호출할 수 없습니다.- 접근 지정자는 매개변수 바로 다음에 지정합니다.
pragma solidity ^0.4.19;
contract ZombieFactory {
uint a = 16;
uint b = a ** 10 // b는 16의 10승
struct Zombie {
string name;
uint dna;
}
Zombie[5] public zombies;
// private 속성의 함수는 다른 컨트랙트에서 활용할 수 없습니다.
function createZombie(string _name, uint _dna) private {
}
}
함수의 접근자 지정하기 2 : internal & external
솔리디티에는 public과 private 이외에도 internal
과 external
이라는 함수 접근 제어자가 존재합니다.
internal
: private과 유사하나, 상속을 받은 컨트랙트(자식 컨트랙트)에서는 함수를 사용할 수 있게 합니다.external
: external을 붙인 함수는 컨트랙트의 외부에서만 호출될 수 있습니다.
contract Sandwich {
uint private sandwichesEaten = 0;
function eat() internal {
sandwichesEaten++;
}
}
contract BLT is Sandwich {
uint private baconSandwichesEaten = 0;
function eatWithBacon() public returns (string) {
baconSandwichesEaten++;
// eat 함수가 internal로 선언되었기 때문에 자식 컨트랙트에서 호출이 가능합니다.
eat();
}
}
함수의 반환값 지정하기
함수가 반환하는 타입(자료형)은 returns
라는 키워드를 통해 명시적으로 드러나야 합니다.
pragma solidity ^0.4.19;
contract ZombieFactory {
uint a = 16;
uint b = a ** 10
struct Zombie {
string name;
uint dna;
}
Zombie[5] public zombies;
// returns (string)을 통해 이 함수가 문자열을 리턴함을 알 수 있습니다.
function createZombie(string _name, uint _dna) public returns (string) {
return "create";
}
}
함수 제어자 지정하기
컨트랙트의 변수를 읽고 쓰는지 여부에 따라 제어자를 지정합니다.
view
: 컨트랙트의 변수를 읽기만 할 때 (상태를 변화시키지 않을때)pure
: 컨트랙트의 변수를 읽지도, 쓰지도 않을 때
제어자는 리턴 타입과 접근자 사이에 위치하게 됩니다.
pragma solidity ^0.4.19;
contract ZombieFactory {
uint a = 16;
uint b = a ** 10
struct Zombie {
string name;
uint dna;
}
Zombie[5] public zombies;
function createZombie(string _name, uint _dna) public returns (string) {
return "create";
}
// 어떤 변수도 활용하지 않으므로 pure 제어자를 활용한 모습입니다.
function _generateRandomDna(string _str) private pure returns (string) {
}
}
require 키워드
require 는 조건이 참이면 함수를 실행하고, 참이 아니면 함수를 실행하지 않고 에러를 출력합니다.
pragma solidity ^0.4.19;
contract ZombieFactory {
uint a = 16;
uint b = a ** 10
struct Zombie {
string name;
uint dna;
}
Zombie[5] public zombies;
function createZombie(string _name, uint _dna) public returns (string) {
// _name이 "찬민" 일 경우에만 함수를 실행합니다.
require(_name == "찬민");
return "create";
}
}
값의 반환
솔리디티의 함수는 값을 반환하되, 한번에 여러 값을 반환할 수 있습니다.
function multipleReturn() public pure returns (
uint a;
uint b;
uint c;
) {
return (10, 20, 30);
}
// 세 번째 리턴값만을 추출하고자 할 경우
uint number;
(, , number) = multipleReturn(); // number: 30
반응형
'💬 언어 > Solidity' 카테고리의 다른 글
솔리디티 - 05. Storage와 Memory (0) | 2021.04.16 |
---|---|
솔리디티 - 04. 매핑과 msg.sender (0) | 2021.04.16 |
솔리디티 - 03. 이벤트 (0) | 2021.04.16 |
keccak256 함수로 난수 생성하기 (0) | 2021.04.16 |
솔리디티 - 01. 기본 문법 1 (자료형과 연산) (1) | 2021.04.15 |
Comments
소소한 팁 : 광고를 눌러주시면, 제가 뮤지컬을 마음껏 보러다닐 수 있어요!
와!! 바로 눌러야겠네요! 😆