0

我刚刚写了一个简单的代码来测试 openzeplin Safemath 库。我正在使用最新版本的 remix ide 并为 ^0.5.0 编译。Remix 使用的是 0.5.0_commit.1d4f565a 编译器环境是 JavaScript VM EVM 版本是编译器默认

add 函数似乎在下面给出的代码中不起作用

我已经尝试过 x.sub(1) 它按预期抛出异常,我也尝试过将 x 初始化为不同的值,但仍然无法正常工作。

pragma solidity ^0.5.0;
import "./SafeMath.sol";

contract SimpleStorage {
    using SafeMath for uint;
    uint x;

    event incremented(uint x);

    constructor() public{
        x=0;
    }

    function increment() public {
        x.add(1);
        emit incremented(x);
    }

    function get() external view returns (uint) {
        return x;
    }
}

每次调用函数时,预期输出都会增加 1,但每次都获得相同的值。Emit 也显示相同的值。

4

1 回答 1

0

好吧,这是你的错误:)

而不是x.add(1)尝试x = x.add(1)。添加函数未就地,返回新值,您需要将新值分配给x.

于 2019-07-22T17:33:58.817 回答