01 前言
最近在整理代码框架结构,对于之前的一些逻辑框架进行重新梳理,我一度以为在IDL中并没有设计多IF-ELSE结构,只能单IF结构或者IF-ELSE结构,我尝试从帮助中寻找相关多IF-ELSE结构,但似乎并没有结果,暂作罢。
02 如何写IF-ElSE IF-ELSE
结构的思路过程
我们学了很多编程语言,我们常常认为在C语言中:
if(boolean_expression 1)
{
/* 当布尔表达式 1 为真时执行 */
}
else if( boolean_expression 2)
{
/* 当布尔表达式 2 为真时执行 */
}
else if( boolean_expression 3)
{
/* 当布尔表达式 3 为真时执行 */
}
else
{
/* 当上面条件都不为真时执行 */
}
中else if
是一个整体,else
是一个整体,换句话说,else if
在之前条件不成立时继续跳转到该条件下继续判断。
甚至在Python中,我们的简洁性进一步提高,else if
变成了elif
。
这使得我们对于了解其本质反而有些模糊。有没有可能,只有else
和if
呢?
对于IF-ELSE
那么结构就应该是:
对于IF-ELSE IF-ELSE
,那么结构实际上是:
也就是说,else if
关键字实际上不是一个整体,不是一个关键字,而是两个关键字的组合。他表示的是IF
为假时,进入ELSE
,在ELSE
内有一个IF
结构。
对于IDL,即:
a = 1
if a lt 0 then begin
print, 'a小于0'
endif else begin
if a eq 0 then begin
print, 'a等于0'
endif else begin
if a eq 1 then begin
print, 'a等于1'
endif else begin
print, 'a既不小于0, 也不等于0或1'
endelse
endelse
endelse
但是,如果这么写,就有些过于啰嗦了,上述只是说明else if
的本质就是else
和if
的组合,不是作为一个单独的关键字存在。我们实际可以简化写成下方:
a = 1
if a lt 0 then begin
print, 'a小于0'
endif else if a eq 0 then begin
print, 'a等于0'
endif else if a eq 1 then begin
print, 'a等于1'
endif else begin
print, 'a既不小于0, 也不等于0或1'
endelse
为什么可以这样写?Just IDL在进行IF-ELSE
结构支持单行书写,例如:
a = 1
if a eq 1 then print, 'a等于1'
对于else
,如果不进行单行书写那么就是:
a = 1
if a eq 0 then begin
print, 'a等于0'
endif else begin
print, 'a不等于0'
endelse
进行单行书写那么即:
a = 1
if a eq 0 then begin
print, 'a等于0'
endif else print, 'a不等于0'
那么,如果我们将print, 'a不等于0'
替换为if
结构,那么就是原先的看到的:
好了,Bye~