Uniswap

{…} 作為函式呼叫的一部分是什麼意思?

  • February 26, 2022

swapExactETHForTokens在Uniswap的函式中是這樣呼叫的:

uniswap.swapExactETHForTokens{value: msg.value}(
           amountOut,
           path,
           msg.sender,
           deadline
       );

部分{value: msg.value}是什麼意思?這真的是正確的合成嗎?意思是,{...}函式呼叫中的自身。

value並且函式內部是否不以正常方式接受參數(...)

這就是您可以呼叫函式並為其提供值的方式。

價值的概念是指在呼叫過程中發送的乙太幣。該值取自契約餘額。如果你想發送 Ether,你不能在 Solidity中將作為正常參數提供(),而不僅僅是一些uint恰好被呼叫的參數value

這是一個例子。如果呼叫demo(記得在呼叫函式時包含值,否則合約沒有任何值可以轉發),some函式呼叫不會轉發任何值。但other呼叫前轉6 位。另請注意,需要聲明函式payable才能接收值。

contract A {   
   function demo() public payable {
       B inst = new B();
       inst.some(5);
       inst.other{value: 6}();
   }
}
contract B {
   uint private _value;
   function some(uint value) public {
       _value = value;
   }
   function other() payable public {
   }
}

您可以在此處查看例如語法:https ://docs.soliditylang.org/en/latest/control-structures.html#external-function-calls

引用自:https://ethereum.stackexchange.com/questions/122623