// key : addressν value : uintν
mapping(address => uint) ownerZombieCount;
// 맀νκ° μ½κ³ μ°κΈ°
mapping(uint => address) public zombieToOwner;
// uintν ν€ 0μ νΈμΆν μ¬λμ μ£Όμκ° ν λΉλ¨
zombieToOwner[0] = msg.sender;
λͺ¨λ ν¨μμμ μ΄μ© κ°λ₯ν νΉμ μ μλ³μ.
ν¨μλ₯Ό νΈμΆν μ¬λμ μ£Όμλ₯Ό κ°λ¦¬ν¨λ€
μ리λν°μμ ν¨μ μ€νμ νμ μΈλΆ νΈμΆμκ° μμνλ―λ‘, λκ΅°κ°κ° 컨νΈλνΈμ ν¨μλ₯Ό νΈμΆν΄μΌ νλ κ²μ!
//_nameμ΄ vitalikμΈμ§ λΉκ΅νλ κ²μ.
require(keccak256(_name) == keccak256("Vitalik"));
if
쑰건 μ λ§μΌλ©΄ μμ볡κ·κ° μ΄λ €μ΄λ° require
μ°λ©΄ κ·Έκ² ν¨μ¬ λΉ λ¦!
μ¬λ¬ 컨νΈλνΈμ μ½λ λ‘μ§ λλλ κ² νΈλ¦¬ν¨. κ·Έλ μμμ μ΄μ©νμ!
contract Doge {
function catchphrase() public returns (string) {
return "So Wow CryptoDoge";
}
}
contract BabyDoge is Doge {
function anotherCatchphrase() public returns (string) {
return "Such Moon BabyDoge";
}
}
BabyDogeλ Dogeλ₯Ό μμν¨.
BabyDoge 컨νΈλνΈκ° μ»΄νμΌμμ μ€νλ λ, catchphrase()ν¨μμλ μ κ·Όν μ μκ³ , anotherCatchphrase()ν¨μμλ μ κ·Όν μ μλ€λ μλ―Έμ.
λΆλΆμ§ν© ν΄λμ€κ° μμ λ μ¬μ©ν μ μκ³ , λ¨μν λμΌν λ‘μ§μ μ¬λ¬ ν΄λμ€λ‘ λΆν νκ³ μΆμ λλ μ¬μ©ν μ μμ
import : μ΄λ€ νμΌμ λ€λ₯Έ νμΌλ‘ λΆλ¬μ€κ³ μΆμ λ !
import "./(νμΌκ³Ό λμΌν ν΄λμ μμλ)fileName";
λ³΄ν΅ ν¨μ μΈλΆμ μ μΈλ μνλ³μλ storage
ν¨μ λ΄λΆμ μ μ₯λ λ³μλ memoryν¨μμμ λ°°μ΄ μ 리ν λ μ°μ΄κΈ°λ
internal : ν¨μκ° μ μλ 컨νΈλνΈλ₯Ό μμνλ 컨νΈλνΈμμλ μ κ·Όμ΄ κ°λ₯
(μ΄ μ λ§ μ μΈνλ©΄ privateλ λκ°λ€)
external : ν¨μκ° μ»¨νΈλνΈ λ°κΉ₯μμλ§ νΈμΆλ μ μκ³ μ»¨νΈλνΈ λ΄ λ€λ₯Έ ν¨μμ μν΄ νΈμΆλ μ μλ€ (μ΄ μ λ§ μ μΈνλ©΄ publicμ΄λ λκ°λ€)
javaλ λΉμ·
λΈλ‘μ²΄μΈ μμ μμΌλ©΄μ μ°λ¦¬κ° μμ νμ§ μμ 컨νΈλνΈμ μ°λ¦¬ 컨νΈλνΈκ° μνΈμμ©μ νλ €λ©΄ λ¨Όμ μΈν°νμ΄μ€λ₯Ό μ μν΄μΌ νλ€
interface μ μλ² contract μλ‘ μ μνλ κ±°λ λΉμ·ν¨!
contract LuckyNumber {
mapping(address => uint) numbers;
function setNum(uint _num) public {
numbers[msg.sender] = _num;
}
function getNum(address _myAddress) public view returns (uint) {
return numbers[_myAddress];
}
}
μ¬μ©μ μ£Όμλ₯Ό ν΅ν΄μ κ·Έ μ¬λμ νμ΄μ μ μ°Ύμλ³Ό μ μλ 컨νΈλνΈκ° μλ€.
μ΄μ getNum ν¨μλ₯Ό μ΄μ©ν΄μ μ΄ μ»¨νΈλνΈμ μλ λ°μ΄ν°λ₯Ό μ½κ³ μ νλ external ν¨μ λ±μ₯!
contract NumberInterface {
function getNum(address _myAddress) public view returns (uint);
}
getNumν¨μλ₯Ό μ°κ³ μΆμ κ±°λκΉ.. interface μ μν΄μ£Όκ³ κ·Έ μμ μ κ±Έ μ¨μ€
contract MyContract {
address NumberInterfaceAddress = 0xab38...
// ^ μ΄λ리μμμ FavoriteNumber 컨νΈλνΈ μ£Όμμ΄λ€
NumberInterface numberContract = NumberInterface(NumberInterfaceAddress)
// μ΄μ `numberContract`λ λ€λ₯Έ 컨νΈλνΈλ₯Ό κ°λ¦¬ν€κ³ μλ€.
function someFunction() public {
// μ΄μ `numberContract`κ° κ°λ¦¬ν€κ³ μλ 컨νΈλνΈμμ `getNum` ν¨μλ₯Ό νΈμΆν μ μλ€:
uint num = numberContract.getNum(msg.sender);
// ...κ·Έλ¦¬κ³ μ¬κΈ°μ `num`μΌλ‘ 무μΈκ°λ₯Ό ν μ μλ€
}
}
λ€μμ κ°μ ν λΉνλ©΄ λλ€!
function processMultipleReturns() external {
uint a;
uint b;
uint c;
// λ€μκ³Ό κ°μ΄ λ€μ κ°μ ν λΉνλ€:
(a, b, c) = multipleReturns();
}
// νΉμ λ¨ νλμ κ°μλ§ κ΄μ¬μ΄ μμ κ²½μ°:
function getLastReturnValue() external {
uint c;
// λ€λ₯Έ νλλ λΉμΉΈμΌλ‘ λκΈ°λ§ νλ©΄ λλ€:
(,,c) = multipleReturns();
}