24 lines
1.4 KiB
Solidity
24 lines
1.4 KiB
Solidity
/**
|
|
Requerer (Require)
|
|
|
|
Na lição 1, possibilitamos os usuários de criar novos zumbis chamando a função createRandomZombie e colocando um nome. Porém, se os usuários continuarem chamando esta função e de forma ilimitada criando zumbis em seus exércitos, o jogo não teria tanta graça.
|
|
Vamos fazer assim, cada jogador só pode chamar esta função uma vez. Desta maneira novos jogadores irão chamar só quando começarem o jogo pela primeira vez, para criar o primeiro zumbi do exército.
|
|
Como podemos fazer esta função ser chamada somente uma vez por jogador?
|
|
Para isso nós vamos usar o require (requerer). require faz com que a função lance um erro e pare a execução se alguma condição não for verdadeira:
|
|
*/
|
|
|
|
function sayHiToVitalik(string _name) public returns (string) {
|
|
// Compara se _name é igual à "Vitalik". Lança um erro e termina se não for verdade.
|
|
// (Lembrete: Solidity não tem uma forma nativa de comparar strings, então
|
|
// temos que comparar os hashes keccak256 para verificar a igualdade)
|
|
require(keccak256(_name) == keccak256("Vitalik"));
|
|
|
|
// Se é verdade, prossiga com a função:
|
|
return "Olá!";
|
|
}
|
|
|
|
/**
|
|
Se você chamar esta função com sayHiToVitalik("Vitalik"), ela irá retornar "Olá!". Se você chamar esta função com outra entrada, ela irá lançar um erro e não irá executar.
|
|
Sendo assim, require é muito útil para verificar certas condições que devem ser verdadeiras antes de executar uma função.
|
|
|
|
*/
|