Solidity:将它传递给 "true" 后,我的 bool 没有传递给 false ... 为什么?
Solidity : After passing it to "true", my bool doesn't pass to false... why?
我开始学习 Solidity。我正在使用 Visual Studio Code 和 Remix 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 设置为 myBool
和 setBool()
。使用 getBool()
后,我得到 true。这里一切都好。
但是,当我想用 setBool()
将 false 设置为 myBool
时,我仍然得到 true 与 getBool()
。我不明白如何以及为什么?
感谢您的帮助。
(如果我犯了一些错误,请原谅我的英语)
我没有足够的声誉来发表评论,所以这将是一个答案。您的代码是正确的,但可能存在一些棘手的问题。
- 第一个“false”是默认值,因为 bool 是“值类型”。阅读 here.
的第一段
- 我建议您使用 remix ide 本身(例如在线版本)。我想不同的 ide 扩展不能完全信任。
- 您可能只是没有等待交易确认,所以您读取了旧值。
我开始学习 Solidity。我正在使用 Visual Studio Code 和 Remix 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 设置为 myBool
和 setBool()
。使用 getBool()
后,我得到 true。这里一切都好。
但是,当我想用 setBool()
将 false 设置为 myBool
时,我仍然得到 true 与 getBool()
。我不明白如何以及为什么?
感谢您的帮助。 (如果我犯了一些错误,请原谅我的英语)
我没有足够的声誉来发表评论,所以这将是一个答案。您的代码是正确的,但可能存在一些棘手的问题。
- 第一个“false”是默认值,因为 bool 是“值类型”。阅读 here. 的第一段
- 我建议您使用 remix ide 本身(例如在线版本)。我想不同的 ide 扩展不能完全信任。
- 您可能只是没有等待交易确认,所以您读取了旧值。