来自以太坊的运营商合同_;

时间:2017-08-04 19:11:50

标签: javascript ethereum smartcontracts

很抱歉,如果是重复的问题。 “_”运算符是做什么的?

此代码来自以太坊合约手册: https://ethereum.org/token#deploying

contract owned {
    address public owner;

    function owned() {
        owner = msg.sender;
    }

    modifier onlyOwner {
        if (msg.sender != owner) throw;
        _;
    }

    function transferOwnership(address newOwner) onlyOwner {
        owner = newOwner;
    }
}

2 个答案:

答案 0 :(得分:0)

它用于修饰符内部。

  

“函数体插入了特殊符号”_“中   出现修饰语的定义。“

参考: Contracts — Solidity 0.4.19 documentation

如果它只在修饰符中使用一次,您可以看到如下: 分配返回变量后,_将控制流返回到当前修改器旁边的内容(当前修改器旁边可能是下一个修改器或函数)。

您可以在答案中看到详细解释和示例: Are underscores _ in modifiers code or are they just meant to look cool?

答案 1 :(得分:0)

修饰符用于强制执行函数的前/后条件。

_运算符是一个简写,表示您正在修改的函数的实际代码"

因此,在您的代码中,每次调用transferOwnership时,onlyOwner修改器都会首先发挥作用。

  • 如果您不是所有者,则只执行throw,将所有内容回滚并退​​出。
  • 如果您是所有者,则控制流将到达_运算符,因此将执行transferOwnership语句。