可以从Yul访问struct字段吗?理想情况下,它看起来如下:
pragma solidity ^0.7.0;
pragma experimental ABIEncoderV2;
contract Sample {
struct S {
uint256 n;
bytes b;
}
function foo(S memory s) external {
uint256 len;
assembly {
len := mload(s.b);
}
}
}如果没有,那么访问s.b fiels的最佳方法是什么?
bytes memory localB = s.b;发布于 2020-10-28 11:49:27
是的,通过使用mload操作码:
pragma solidity ^0.7.4;
pragma experimental ABIEncoderV2;
contract Sample {
struct S {
uint256 n;
bytes b;
}
function foo(S memory s) external pure returns (uint256 _x, bytes memory _y) {
assembly {
_x := mload(s)
_y := mload(add(s,0x20))
}
}
}要在Remix中测试函数,可以使用以下元组:[1, "0xaa00ff"]。
https://ethereum.stackexchange.com/questions/89703
复制相似问题