目录
一、前言
二、返回值(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 herefunction _generateRandomDna(string _str) private view returns (uint) {}}