坚固性组装错误:必须调用内置函数"gas"



我正在用solididity写代理合同。要在我的回调函数中转发传入呼叫,我使用内联汇编代码。我是一名学生,下面的代码是我的老师在教程中写的代码。

我收到以下错误与我的代码:

内置函数"gas"必须调用

我假设Solidity自教程制作以来已经发展,但我在网上(谷歌或文档)找不到任何东西。

代码如下:

assembly {
let result := delegatecall(gas, implementation, add(data, 0x20), mload(data), 0, 0)
let size := returndatasize
let ptr := mload(0x40)
returndatacopy(ptr, 0, size)
switch result   
case 0 {revert(ptr, size)}  
default{return(ptr, size)}  
}

错误是指单词"gas"在用红色下划线标出的第二行。
有什么变化吗?

在旧版本的文档中(例如v0.4.24)它说:

对于不带实参的操作码,括号可以省略。

但是,新版本的文档链接到中间语言的单独页面,现在称为Yul。在该页上,操作码现在也被称为"内置函数">,并且似乎不再允许省略括号。

所以你应该用gas()而不是gas