今天我们不讲三国,来讲讲 流程控制 关于什么是流程控制
,想来您是知道的吧!可若您确实不晓得,那您看了这篇文或许对流程控制
有了初步的了解。 Solidity 和其他语言一样,支持大部分流程控制
语句,除了switch
和被程序员界
谈虎色变而其他语言又保留的goto
。
今天我们不讲三国,来讲讲 流程控制
关于什么是流程控制
,想来您是知道的吧!可若您确实不晓得,那您看了这篇文或许对流程控制
有了初步的了解。
Solidity 和其他语言一样,支持大部分流程控制
语句,除了switch
和被程序员界
谈虎色变而其他语言又保留的goto
。
1、if-else
// SPDX-License-Identifier: GPL-3.0
pragma solidity ^0.8.0;
contract C {
function ifElseExam(uint8 age) external pure returns(uint8){
if(age > 18){
return 1;
}else {
return 0;
}
}
}
2、for
// SPDX-License-Identifier: GPL-3.0
pragma solidity ^0.8.0;
contract C {
function forLoopExam() external pure returns(uint){
uint sum; //用于记录总和
for(uint i = 0; i <= 10; i ++){
sum += i;
}
return sum;
}
}
3、while
// SPDX-License-Identifier: GPL-3.0
pragma solidity ^0.8.0;
contract C {
function whileExam() external pure returns(uint){
//解构赋值 与golang多个赋值相似
(uint sum, uint i) = (0,0);
while(i <= 10){
sum += i;
i ++;
}
return sum;
}
}
4、do-while
// SPDX-License-Identifier: GPL-3.0
pragma solidity ^0.8.0;
contract C {
function doWhileExam() external pure returns(uint){
//解构赋值 与golang多个赋值相似
(uint sum, uint i) = (0,0);
do {
sum += i;
i ++;
}
while(i <= 10);
return sum;
}
}
当然咯,Solidity 也是支持continue
以及break
操作符的。
5、三元运算符 ? :
另外,Solidity 还支持三元运算符
,其也是Solidity 唯一一个三元运算符,表达式 ? 若表达式为真则返回这个值 : 表达式为假便返回这个值
。
// SPDX-License-Identifier: GPL-3.0
pragma solidity ^0.8.0;
contract C {
/*
* @title 比较两个值,若前一个大于后一个 则返回 1,小于便返回 -1,等于则返回 0
* @param int a 第一个数
* @param int b 第二个数
* @return int 1(a > b), 0(a = b),-1(a < b)
*/
function exam(int a,int b) external pure returns(int){
return (a > b ? int(1) : a < b ? int(-1) : int(0));
}
}