目录

​一、前言​

​二、返回值(return values)​

​1、返回值格式​

​三、修饰符(modifiers)​

​1、view​

​2、pure​

​四、实战​


一、前言

看了一些区块链的教程,论文,在网上刚刚找到了一个项目实战,CryptoZombies。从这篇博客开始总结自己的学习笔记,与大家一同分享。


二、返回值(return values)

1、返回值格式

在Solidity 里,函数的定义里可包含返回值的数据类型(如本例中 ​​string​​)。

返回值格式示例如下:

string greeting = "What's up dog";

function sayHello() public returns (string) {
return greeting;
}

注:

1.返回值放在函数的共有私有属性后面;

2.返回用returns,而不是return。

三、修饰符(modifiers)

1、view

上面提到的函数实际上没有改变 Solidity 里的状态,即,它没有改变任何值或者写任何东西。这种情况下我们可以把函数定义为 view, 意味着它只能读取数据不能更改数据

2、pure

pure 函数, 表明这个函数甚至都不访问应用里的数据

示例如下:

function _multiply(uint a, uint b) private pure returns (uint) {
return a * b;
}

使用修饰符注意点如下:

1.修饰符放在共有私有属性后面;

2.放在函数返回值前面。

四、实战

1.要求

1.创建一个 ​​private​​​ 函数,命名为 ​​_generateRandomDna​​​。它只接收一个输入变量 ​​_str​​​ (类型 ​​string​​​), 返回一个 ​​uint​​ 类型的数值。

2.此函数只读取我们合约中的一些变量,所以标记为​​view​​。

3.函数内部暂时留空。

2.代码

 

pragma solidity ^0.4.25;

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));
}
// start here
function _generateRandomDna(string _str) private view returns (uint) {

}

}