pragma solidity ^0.4.19;
contract ZombieFactory {
uint dnaDigits = 16;
uint dnaModulus = 10 ** dnaDigits;
struct Zombie {
string name;
uint dna;
}
Zombie[] public zombies;
// 여기서 시작
function createZombie(string _name, uint _dna) {
}
}
함수 인자값은 보통 '_' 언어스코어를 변수앞에 붙여서, 전역 변수와 구별하는 것이 관례라고 한다.
Public / Private 함수
// public 함수
function createZombie(string _name, uint _dna) {
zombies.push(Zombie(_name, _dna));
}
// private 함수
function _addToArray(uint _number) private {
numbers.push(_number);
}
솔리디티의 경우 보안을 엄청 신경써야 하므로, 대다수의 함수를 private 함수로 선언하는데 private 함수는 다음 형태외 같다. 함수명 앞에 언더스코어('_')를 붙이고 뒤에 private이라고 선언해준다.
함수 반환
함수제어자
함수 제어자를 통해, 함수에 접근하는 데이터를 제어할 수 있다.
view
string greeting = "What's up dog";
function sayHello() public returns (string) {
return greeting;
}
function sayHello() public view returns (string) {}
만약, 어떤 함수가 데이터를 변경하는 행위는 하지 않고 데이터를 읽기만 한다면 view를 통해 제어할 수 있다.
pure
function _multiply(uint a, uint b) private pure returns (uint) {
return a * b;
}
pure는 해당 함수가 앱에서 어떠한 데이터도 접근하지 않을때 사용한다. 앱에서 읽는 것도 하지 않지만, return 값이 함수에 전달된 인자에 따라 달라질 때만 해당 제어자를 사용한다.
반응형
'블록체인 > 솔리디티' 카테고리의 다른 글
[솔리디티] 간단한 Smart Contract (코인 발행 예제) (0) | 2022.05.24 |
---|---|
[Solidity]Truffle, Ganache를 이용한 Smart Contract 작성 (0) | 2021.12.10 |
[Solidity] 변수 및 데이터 타입 (0) | 2021.12.01 |
[Solidity] 구조체 & 배열 (0) | 2021.12.01 |
[Solidity] 솔리디티 쉽게 공부할만한 사이트 추천, 크립토 좀비 (0) | 2021.12.01 |