public 变量和 getThatvariable 函数刷新之间有区别吗?

is there q difference between a public variable and getThatvariable function refresh?

我们知道我们可以使用 getVarible return 函数,或者简单地为该变量使用 public 范围,但是除了我们希望该状态变量何时不是 public 然后使用 get 函数吗?

我问这个是因为当尝试只使用 public 变量(不是地址类型)时,我只得到初始变量值,尽管 getVariable 工作得很好。

    uint public userBlance = address(this).balance ;

function getBalance() public view returns (uint){
    uint balance = address(this).balance;
    return balance;
}

完全没有区别。但是你的代码有点模棱两可。

假设您的初始余额为 10。

userBalance = address(this).balance

然后您将余额更新为 20。

address(this).balance = 20

问题是userBalance没有更新,因为它指向的是10的地址,而不是余额的地址。

而函数getBalance再次访问用户地址以获得余额。


这不是 solidity 的东西,但它与其他语言相同。

userBalance 指向值 (10) 而不是引用,因此它不会改变。除非您修改 userBalance 以及语句 address(this).balance = 20