title |
actions |
material |
放在一起 |
|
editor |
language |
startingCode |
answer |
sol |
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));
}
function _generateRandomDna(string _str) private view returns (uint) {
uint rand = uint(keccak256(_str));
return rand % dnaModulus;
}
// 从这里开始
}
|
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));
}
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);
}
}
|
|
|
我们就快完成我们的随机僵尸制造器了,来写一个公共的函数把所有的部件连接起来。
写一个公共函数,它有一个参数,用来接收僵尸的名字,之后用它生成僵尸的DNA。
-
创建一个 public
函数,命名为 createRandomZombie
. 它将被传入一个变量 _name
(数据类型是 string
)。 (注: 定义公共函数 public
和定义一个私有 private
函数的做法一样)。
-
函数的第一行应该调用 _generateRandomDna
函数,传入 _name
参数, 结果保存在一个类型为 uint
的变量里,命名为 randDna
。
-
第二行调用 _createZombie
函数, 传入参数: _name
和 randDna
。
-
整个函数应该是4行代码 (包括函数的结束符号 }
)。