Solidity:将它传递给 "true" 后,我的 bool 没有传递给 false ... 为什么?

Solidity : After passing it to "true", my bool doesn't pass to false... why?

我开始学习 Solidity。我正在使用 Visual Studio CodeRemix IDE 扩展名。

我已经有点问题了

我写了这个简单的合同:

// SPDX-License-Identifier: UNLICENSED

pragma solidity 0.8.12;

contract test2 {

 bool myBool;

 function getBool() public view returns(bool){
    return myBool;
 }

 function setBool(bool _bool) public {
    myBool = _bool;
 }

我编译了它并将其部署在测试网区块链中。

使用 getBool() 后,我得到一个 false。这里没有什么可报告的...

然后我将值 true 设置为 myBoolsetBool()。使用 getBool() 后,我得到 true。这里一切都好。

但是,当我想用​​ setBool()false 设置为 myBool 时,我仍然得到 truegetBool()。我不明白如何以及为什么?

感谢您的帮助。 (如果我犯了一些错误,请原谅我的英语)

我没有足够的声誉来发表评论,所以这将是一个答案。您的代码是正确的,但可能存在一些棘手的问题。

  1. 第一个“false”是默认值,因为 bool 是“值类型”。阅读 here.
  2. 的第一段
  3. 我建议您使用 remix ide 本身(例如在线版本)。我想不同的 ide 扩展不能完全信任。
  4. 您可能只是没有等待交易确认,所以您读取了旧值。