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
我们知道我们可以使用 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