我最近创建了一个函数,用于检查交换智能合约中是否存在对。
函数如下:
function checkIfPairExists(address _token1, address _token2) internal returns(uint, bool) {
for (uint index = 0; index < tokenPairs.length; index++) {
if (tokenPairs[index].token1 == _token1 && tokenPairs[index].token2 == _token2) {
return (index, true);
}
else if (tokenPairs[index].token2 == _token1 && tokenPairs[index].token1 == _token2) {
return (index, true);
} else {
return (0, false);
}
}
}
这个函数工作得很好,但当我尝试在if语句中使用这个函数时,如下所示:
if (checkIfPairExists(_token1, _token2) == (uint256, true))
我该如何写才能正确?我正在尝试为我的数组接收对的索引,并bool查看该对是否存在。然后我需要保存该索引,以找到它应该添加到哪对。
希望它有意义。
让我知道我是否应该重新表述这个问题,这样更多的人会理解它,它可以帮助他们。
感谢
您需要将返回的值分配给两个独立的变量。然后您可以验证其中任何一个。
(uint256 index, bool exists) = checkIfPairExists(_token1, _token2);
if (exists == true) {
// do something with `index`
}
正如@pert hejda在上面的回答中所说,您需要分配函数返回值,然后才能使用这些值来检查条件。为什么?因为多个返回被表示为元组,而目前solidity不支持您想要的功能。因此,您需要分配返回值,并在条件语句中使用这些值。非常感谢。