您的位置:首页 > 科技 > 能源 > 企业年报网上申报入口免费官方_成都seo优化_利尔化学股票_深圳网络推广系统

企业年报网上申报入口免费官方_成都seo优化_利尔化学股票_深圳网络推广系统

2025/4/3 11:27:04 来源:https://blog.csdn.net/2401_86523075/article/details/146507540  浏览:    关键词:企业年报网上申报入口免费官方_成都seo优化_利尔化学股票_深圳网络推广系统
企业年报网上申报入口免费官方_成都seo优化_利尔化学股票_深圳网络推广系统

文章目录

    • cryptozombies合约4
    • 私有 / 公共函数
      • 实战
    • 函数的更多属性
      • 返回值
      • 函数的修饰符
      • 实战

cryptozombies合约4

私有 / 公共函数

Solidity 定义的函数的属性默认为公共。 这就意味着任何一方 (或其它合约) 都可以调用你合约里的函数。

显然,不是什么时候都需要这样,而且这样的合约易于受到攻击。 所以将自己的函数定义为私有是一个好的编程习惯,只有当你需要外部世界调用它时才将它设置为公共。

定义一个私有的函数

uint[] numbers;function _addToArray(uint _number) private {numbers.push(_number);
}

可以看到,在函数名字后面使用关键字== private== 即可。和函数的参数类似,私有函数的名字用==(_)==起始。

实战

改变createZombie 为私有函数,不要忘记遵守命名的规矩哦!

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));}
}

函数的更多属性

返回值

要想函数返回一个数值,按如下定义:

string greeting = "What's up dog";function sayHello() public returns (string) {return greeting;
}

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

函数的修饰符

上面的函数实际上没有改变 Solidity 里的状态,即,它没有改变任何值或者写任何东西。

这种情况下我们可以把函数定义为== view==, 意味着它只能读取数据不能更改数据:

function sayHello() public view returns (string) {}

Solidity 还支持 pure 函数, 表明这个函数甚至都不访问应用里的数据,例如:

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

这个函数甚至都不读取应用里的状态 — 它的返回值完全取决于它的输入参数,在这种情况下我们把函数定义为 pure.

注:可能很难记住何时把函数标记为 pure/view。 幸运的是, Solidity 编辑器会给出提示,提醒你使用这些修饰符。

实战

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

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

函数内部暂时留空,以后我们再添加代码。

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) {}
}

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com