第12章: 放在一起
我們就快完成我們的隨機(jī)僵尸制造器了祝拯,來寫一個(gè)公共的函數(shù)把所有的部件連接起來主穗。
寫一個(gè)公共函數(shù),它有一個(gè)參數(shù)襟锐,用來接收僵尸的名字,之后用它生成僵尸的DNA膛锭。
實(shí)戰(zhàn)演習(xí)
創(chuàng)建一個(gè) public 函數(shù)捌斧,命名為 createRandomZombie. 它將被傳入一個(gè)變量 _name (數(shù)據(jù)類型是 string)。 (注: 定義公共函數(shù) public 和定義一個(gè)私有 private 函數(shù)的做法一樣)泉沾。
函數(shù)的第一行應(yīng)該調(diào)用 _generateRandomDna 函數(shù),傳入 _name 參數(shù), 結(jié)果保存在一個(gè)類型為 uint 的變量里妇押,命名為 randDna跷究。
第二行調(diào)用 _createZombie 函數(shù), 傳入?yún)?shù): _name 和 randDna敲霍。
整個(gè)函數(shù)應(yīng)該是4行代碼 (包括函數(shù)的結(jié)束符號(hào) } )俊马。
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) private {
zombies.push(Zombie(_name, _dna));
// 這里觸發(fā)事件
}
function _generateRandomDna(string _str) private view returns (uint) {
uint rand = uint(keccak256(_str));
return rand % dnaModulus;
}
function createRandomZombie(string _name) public {
uint randDna = _generateRandomDna(_name);
_createZombie(_name, randDna);
}
}