为什么solidity中视图函数中会提到memory关键字

Why memory keyword is mentioned in view function in solidity

  function getAllWaves() public view returns (Wave[] memory) {
        return waves;
    }

我正在浏览 _buildspace 教程并找到了这段代码。我之前读过 memeroy 关键字在 solidity 中用于指定变量应存储在 memeroy(而不是状态)中,以便我们可以在函数调用后销毁它。但是为什么在此视图函数的 return 部分中提到了内存,因为它只是 return 一个值。

我是 solidity 的新手,所以任何与此相关的文章也会有所帮助。 谢谢

所有引用类型变量(包括数组)都需要指定 data location

EVM 无法 return 直接从存储,因为 storage 位置修饰符就像一个指针,return 只是一个指针而不是指针是没有用的实际值。

所以它将 waves 数组的值从存储加载到内存,然后 return 从内存中加载它。