在getKitty
之类的函数中,他们(CryptoZombies Tutorial Tool)首先创建一个存储工具包,然后使用结构中的字段。但为什么不使用内存而不是存储?内存成本更低,也可以使用所有字段。我想知道为什么他们使用存储?
function getKitty(uint256 id) external view returns (
bool isGestating,
bool isReady,
uint256 cooldownIndex,
uint256 nextActionAt,
uint256 siringWithId,
uint256 birthTime,
uint256 matronId,
uint256 sireId,
uint256 generation,
uint256 genes
) {
Kitty storage kit = kitties[id];
// if this variable is 0 then it's not gestating
isGestating = (kit.siringWithId != 0);
isReady = (kit.cooldownEndBlock <= block.number);
cooldownIndex = uint256(kit.cooldownIndex);
nextActionAt = uint256(kit.cooldownEndBlock);
siringWithId = uint256(kit.siringWithId);
birthTime = uint256(kit.birthTime);
matronId = uint256(kit.matronId);
sireId = uint256(kit.sireId);
generation = uint256(kit.generation);
genes = kit.genes;
}
答案 0 :(得分:0)
此功能定义为&#34;外部视图&#34;。 外部视图功能在用户从外部调用时不会消耗任何气体,因为他们没有修改任何关于以太坊状态的气体。 我是从delegatecall.com获得的