函数3
上一节
下一节
返回值
function function-name(parameter-list) scope returns() {
//语句
}经过上面关卡,我们对关键字 function 声明,函数名、参数、可见性应该有了相应的理解。现在我们来学习返回值。
在Solidity里,如果想让函数返回一个数值,要在函数的定义里包含返回值的数据类型。如以下例子中的 string:
string greeting = "What's up";
function sayHello() public returns (string) {
return greeting;
}另外,在Solidity中函数可以返回多个值。
function getResult() public view returns(uint product, uint sum){
}函数的修饰符
在上面涉及函数的关卡里,我们学习了函数的语法,函数可见范围的设定等,接下来我们来学习一下影响函数行为的关键词 view 和 pure。
当函数被标为 view 时,它承诺不会对任何状态进行修改。它只能读取数据不能更改数据。
function sayHello() public view returns (string) {
}当函数被标为 pure 时,它表示这个函数不会读取或者更改数据。这样的函数返回值完全取决于它的输入参数。
实战演习
当我们有了孵化宠物的合约,定义不同宠物属性的结构体,在应用里存储宠物的数组和生成宠物的函数。现在我们需要一个帮助型的函数,可以根据一个字符串随机生成一个DNA,同时确保新的宠物DNA为19位。
1.创建一个
private函数,命名为_generateRandomDna。它只接收一个类型为string的输入变量_str, 返回一个uint类型的数值。2.此函数只读取我们合约中的一些变量,所以标记为
view。


