什么是映射点更新?
What Mapping dot update is?
试图理解 Uniswap v3-core 的含义,我遇到了一个我无法理解的意想不到的 Solidity 语法,所以我需要有人来解释它。
事情是关于 UniswapV3Pool.sol
合同的,可以在两个网站上找到
etherscan.io and github 的项目。
更重要的是,有以下几行:
406 flippedLower = ticks.update(
407 tickLower,
408 tick,
409 liquidityDelta,
410 _feeGrowthGlobal0X128,
411 _feeGrowthGlobal1X128,
412 secondsPerLiquidityCumulativeX128,
413 tickCumulative,
414 time,
415 false,
416 maxLiquidityPerTick
417 );
但是 ticks
变量只是一个 mapping
:
93 mapping(int24 => Tick.Info) public override ticks;
- 所以我不明白。
update
那里叫什么?
- 还有一些类似的不解,比如
386 position = positions.get(owner, tickLower, tickUpper);
哪里
97 mapping(bytes32 => Position.Info) public override positions;
mapping
上也没有 get
。怎么回事?
UniswapV3Pool.sol
通过 Tick
库中定义的函数扩展特定的 mapping
类型:
using Tick for mapping(int24 => Tick.Info);
Tick
库然后定义了 update()
函数 (GitHub source)。
由 Position
库 (GitHub source) 扩展的 positions
映射以及其他一些映射也是如此。
using Position for mapping(bytes32 => Position.Info);
这是 using ... for
的 Solidity 文档:https://docs.soliditylang.org/en/v0.8.11/contracts.html#using-for
试图理解 Uniswap v3-core 的含义,我遇到了一个我无法理解的意想不到的 Solidity 语法,所以我需要有人来解释它。
事情是关于 UniswapV3Pool.sol
合同的,可以在两个网站上找到
etherscan.io and github 的项目。
更重要的是,有以下几行:
406 flippedLower = ticks.update(
407 tickLower,
408 tick,
409 liquidityDelta,
410 _feeGrowthGlobal0X128,
411 _feeGrowthGlobal1X128,
412 secondsPerLiquidityCumulativeX128,
413 tickCumulative,
414 time,
415 false,
416 maxLiquidityPerTick
417 );
但是 ticks
变量只是一个 mapping
:
93 mapping(int24 => Tick.Info) public override ticks;
- 所以我不明白。
update
那里叫什么? - 还有一些类似的不解,比如
386 position = positions.get(owner, tickLower, tickUpper);
哪里
97 mapping(bytes32 => Position.Info) public override positions;
mapping
上也没有 get
。怎么回事?
UniswapV3Pool.sol
通过 Tick
库中定义的函数扩展特定的 mapping
类型:
using Tick for mapping(int24 => Tick.Info);
Tick
库然后定义了 update()
函数 (GitHub source)。
由 Position
库 (GitHub source) 扩展的 positions
映射以及其他一些映射也是如此。
using Position for mapping(bytes32 => Position.Info);
这是 using ... for
的 Solidity 文档:https://docs.soliditylang.org/en/v0.8.11/contracts.html#using-for