{"content":{"title":"Solidity - For 循环","body":"就像 `if` 语句一样，`for` 循环也没有什么令人惊讶的地方。以下是将 1 到 99 的所有数字相加的代码：\r\n\r\n```solidity\r\n\r\ncontract ExampleContract {\r\n    function addNumbers()\r\n        public\r\n        pure\r\n        returns (uint256) {\r\n            uint256 sum = 0;\r\n            for (uint256 i = 0; i < 100; i++) {\r\n                sum = sum + i;\r\n            }\r\n            return sum;\r\n    }\r\n}\r\n\r\n```\r\n\r\n如果你更喜欢这种方式，Solidity 也支持 `+=` 运算符。\r\n\r\n```solidity\r\n\r\ncontract ExampleContract {\r\n    function addNumbers()\r\n        public\r\n        pure\r\n        returns (uint256) {\r\n            uint256 sum = 0;\r\n            for (uint256 i = 0; i < 100; i++) {\r\n                sum += i;\r\n            }\r\n            return sum;\r\n    }\r\n}\r\n\r\n```\r\n\r\nSolidity 也有 `while` 循环和 `do while` 循环，但由于它们很少被使用，目前不值得提及。\r\n\r\n`for` 循环的一个非常自然的用例是遍历数组。但我们还没有介绍数组，所以我们会在那时解释它。\r\n\r\n与其他语言一样，你可以在 `for` 循环内部提前从函数中返回。以下代码将从 2 开始循环，直到找到质因数。\r\n\r\n```solidity\r\n\r\ncontract ExampleContract {\r\n    function findPrimeFactor(uint256 x)\r\n        public\r\n        pure\r\n        returns (uint256) {\r\n            // 从 2 开始，1 不是质因数\r\n            // 使用 <= 因为 x 可能是质数\r\n            for (uint256 i = 2; i <= x; i++) {\r\n                if (x % i == 0) {\r\n                    return i;\r\n                }\r\n            }\r\n    }\r\n}\r\n\r\n```\r\n\r\n**练习题目**\r\n\r\n[IsPrime](https://github.com/RareSkills/Solidity-Exercises/tree/main/IsPrime)\r\n\r\n[Fibonacci](https://github.com/RareSkills/Solidity-Exercises/tree/main/Fibonacci)\r\n\r\n###  了解更多\r\n\r\n请查看 [区块链培训营](https://learnblockchain.cn/openspace/1)，了解更多关于智能合约开发和代币标准的内容。\r\n \r\n\r\n>- 原文链接： [rareskills.io/learn-soli...](https://www.rareskills.io/learn-solidity/for-loops)\r\n>- 登链社区 AI 助手，为大家转译优秀英文文章，如有翻译不通的地方，还请包涵～"},"author":{"user":"https://learnblockchain.cn/people/20722","address":null},"history":null,"timestamp":1740576633,"version":1}