我正在用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
。