接口3
上一节
下一节
处理多返回值
getKitty 是我们所看到的第一个返回多个值的函数。我们来看看是如何处理的:
function multipleReturns() internal returns(uint a, uint b, uint c) {
return (1, 2, 3);
}
function processMultipleReturns() external {
uint a;
uint b;
uint c;
// 这样来做批量赋值:
(a, b, c) = multipleReturns();
}
// 或者如果我们只想返回其中一个变量:
function getLastReturnValue() external {
uint c;
// 可以对其他字段留空:
(,,c) = multipleReturns();
}实战练习
现在我们开始与 CryptoKitties 合约进行交互。
我们来定义一个函数,从 kitty 合约中获取它的基因:
创建一个名为 mateOnKitty 的函数。它需要2个 uint 类型的参数,_petId 和_kittyId ,这是一个 public 类型的函数。
函数首先要声明一个uint类型的名为 kittyDna 的变量。
注意:在我们的 KittyInterface 中,genes 是一个 uint256 类型的变量,但是如果你记得,我们在第一课中提到过,uint 是 uint256 的别名,也就是说它们是一样的。
这个函数接下来调用 kittyContract.getKitty函数, 传入 _kittyId ,将返回的 genes 存储在 kittyDna 中。此处的功能实现代码比较复杂,故把表达式给同学们写出来了,直接复制粘贴即可:(,,,,,,,,,kittyDna) = kittyContract.getKitty(_kittyId);
最后,函数调用 mateAndMultiply ,并传入 _petId 和 kittyDna 两个参数。


