首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >无法理解什么“第一个参数使此函数成为映射方法(int16 => uint256)”。意思是这里

无法理解什么“第一个参数使此函数成为映射方法(int16 => uint256)”。意思是这里
EN

Ethereum用户
提问于 2023-04-16 06:56:07
回答 1查看 45关注 0票数 1
代码语言:javascript
复制
function nextInitializedTickWithinOneWord(
    mapping(int16 => uint256) storage self,
    int24 tick,
    int24 tickSpacing,
    bool lte
) internal view returns (int24 next, bool initialized) {
    int24 compressed = tick / tickSpacing;
    if (lte) {
    (int16 wordPos, uint8 bitPos) = position(compressed);
    uint256 mask = (1 << bitPos) - 1 + (1 << bitPos);
    uint256 masked = self[wordPos] & mask;

从映射参数的这里中可以看出,第一个参数使这个函数成为映射的方法(int16、=>、uint256)。需要注意的一点是:当调用此函数时,没有任何东西作为agrument传递。我不明白我是如何理解这一点的。

还有一件事我不明白,那就是蒙面值是如何计算的。也帮我做这个。

EN

回答 1

Ethereum用户

发布于 2023-04-16 22:15:29

此函数用作mapping(int16 => uint256)类型的运算符。

基本上,您可以使用Using A for B语法将函数附加到类型。这些函数的第一个参数是特殊的,看一些例子更容易理解。

因此,在您的示例中,代码将有一个库,其中包含一些函数,这些函数都在mapping(int16 => uint256)上执行某些操作。这是B类型,将显示为函数中的第一个参数:

代码语言:javascript
复制
library LibraryName {
    function nextInitializedTickWithinOneWord(
        mapping(int16 => uint256) storage self,
        int24 tick,
        int24 tickSpacing,
        bool lte
    ) internal view returns (int24 next, bool initialized) {
        ...
    }
}

主契约具有这种类型的变量ticks。导入库并使用语法Using A for B,我们可以执行以下所有功能:

代码语言:javascript
复制
using LibraryName for mapping(int16 => uint256);
mapping(int16 => uint256) public ticks;

ticks.nextInitializedTickWithinOneWord(
    _tick,
    _tickSpacing,
    _lte
);

相当于这样做:

代码语言:javascript
复制
LibraryName.nextInitializedTickWithinOneWord(
    ticks,
    _tick,
    _tickSpacing,
    _lte
);

查看医生来了中的其他示例。一个常见的例子是Using SafeERC20 for IERC20,您有一个用token.safeTransfer(to, amount)调用的函数function safeTransfer(IERC20 token, address to, uint256 amount)。所以这个函数的第一个参数是“外部”写的。

希望一切都清楚。我不禁要问第二个问题,也许你是在问<<&的意思吗?如果是这样的话,1 << bitPos基本上是2**bitPos,而&是按位的。无论如何,我同意最好用一个单独的问题来问它。

票数 0
EN
页面原文内容由Ethereum提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://ethereum.stackexchange.com/questions/149026

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档