ENVI IDL:如何编写多IF-ELSE结构?

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

这使得我们对于了解其本质反而有些模糊。有没有可能,只有elseif呢?

对于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的本质就是elseif的组合,不是作为一个单独的关键字存在。我们实际可以简化写成下方:

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~

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mfbz.cn/a/142566.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

Spring中Bean实例化方式和Bean生命周期

Spring Bean的实例化方式通过构造方法实例化通过简单工厂模式实例化通过工厂方法模式实例化通过FactoryBean接口实例化 注入自定义DateBean的生命周期Bean的循环依赖问题 Bean的实例化方式 Spring为Bean提供了多种实例化方式,通常包括4种方式。(也就是说…

OSG查看版本信息和32or64位

使用osgversiond命令; -h,显示帮助; osg使用了OpenThreads库,也可以查看OpenThreads的版本号; -r 或 -read,读取贡献者名单文件;没看到啥; 然后进入VS开发人员命令提示;…

使用 Electron 来替代本地调试线上代理的场景

Cookie Samesite 问题 https://developers.google.com/search/blog/2020/01/get-ready-for-new-samesitenone-secure?hlzh-cnhttps://www.chromium.org/updates/same-site/https://github.com/GoogleChromeLabs/samesite-exampleshttps://releases.electronjs.org/releases/s…

【LeetCode刷题-前缀和】--303.区域和检索-数组不可变

303.区域和检索-数组不可变 方法:前缀和 存储数组nums的值,每次调用sumRange时,通过循环的方法计算数组nums从下标i到下标j范围内的元素和,需要计算j-i1个元素的和,由于每次检索的时间和检索的下标范围有关&#xff0…

Collectors.groupingBy方法的使用

Collectors.groupingBy方法的使用 简单使用 业务场景:现在有5个人,这些人都年龄分部在18-30岁之间。现要求把他们按照年龄进行分组 key:年龄 value:数据列表 package com.liudashuai;import java.util.Arrays; import java.uti…

PADS快速调整器件的位号

选择元器件, ctrlA 全选器件,右击菜单选择特性 如下三个信息,确认 配置标签信息,如图界面信息,点击应用,器件全部归位

web 服务

作业:请给openlab搭建web网站 网站需求: 1.基于域名 www.openlab.com 可以访问网站内容为 welcome to openlab!!! 2.给该公司创建三个子界面分别显示学生信息,教学资料和缴费网站, 1、基于 www.openlab.com/student 网站访问学生信…

html5 初步了解

1、html5 含义 简而言之,html5 其实就是新的一代html标准! 2、html5的优缺点 优点 语义化html 增加了很多语义化的标签,让html结构更加清晰,更具可读性由于增加了很多语义化的标签,对SEO更加友好 缺点 其他主流浏…

【Java笔试强训】Day10(CM62 井字棋、HJ87 密码强度等级)

CM62 井字棋 链接:井字棋 题目: 给定一个二维数组board,代表棋盘,其中元素为1的代表是当前玩家的棋子,0表示没有棋子,-1代表是对方玩家的棋子。当一方棋子在横竖斜方向上有连成排的及获胜(及…

【算法】新的开始(Kruskal算法,虚拟源点)

题目 发展采矿业当然首先得有矿井,小 FF 花了上次探险获得的千分之一的财富请人在岛上挖了 n 口矿井,但他似乎忘记了考虑矿井供电问题。 为了保证电力的供应,小 FF 想到了两种办法: 在矿井 i 上建立一个发电站,费用…

[Linux] dns域名解析服务

一、DNS 1.1 DNS简介 域名解析:(英文:Domain Name System,缩写:DNS)是互联网的一项服务。它作为将域名和IP地址相互映射的一个分布式数据库,能够使人更方便地访问互联网。DNS使用udp53和tcp53…

SPC on-line 应用探讨

中国是制造业大国,大部分工厂主要重点是将原料经由加工制造过程(或流程)转变为最终可销售的产品或服务。”产品”是经过被定义的规格下(定义规格者包含客户、制造商本身、供应商…等),在经过”受控制”的人…

day59【单调栈】503.下一个更大元素Ⅱ 42.接雨水

文章目录 503.下一个更大元素Ⅱ42.接雨水 503.下一个更大元素Ⅱ 力扣题目链接 代码随想录讲解链接 题意:给定一个循环数组 nums ( nums[nums.length - 1] 的下一个元素是 nums[0] ),返回 nums 中每个元素的 下一个更大元素 。 数…

键盘接受一串字符到BUF为首地址的字节单元中,要求用下列方法分别编程,将它们以相反的次序显示在屏幕的下一行中

(1).按地址从尾向前依次显示。 (2)利用堆栈反向显示。 (3).利用交换的方法反序后&#xff0c;然后显示&#xff1a;即ai<——>aj

Rust 中的引用与借用

目录 1、引用与借用 1.1 可变引用 1.2 悬垂引用 1.3 引用的规则 2、slice 类型 2.1 字符串字面量其实就是一个slice 2.2 总结 1、引用与借用 在之前我们将String 类型的值返回给调用函数&#xff0c;这样会导致这个String会被移动到函数中&#xff0c;这样在原来的作用域…

网络运维Day14

监控概述 监控的目的 报告系统运行状况每一部分必须同时监控内容包括吞吐量、反应时间、使用率等提前发现问题进行服务器性能调整前&#xff0c;知道调整什么找出系统的瓶颈在什么地方 监控的资源类别 公开数据 Web、FTP、SSH、数据库等应用服务TCP或UDP端口 私有数据 CPU、内…

互联网Java工程师面试题·微服务篇·第三弹

目录 34、什么是端到端微服务测试&#xff1f; 35、Container 在微服务中的用途是什么&#xff1f; 36、什么是微服务架构中的 DRY&#xff1f; 37、什么是消费者驱动的合同&#xff08;CDC&#xff09;&#xff1f; 38、Web&#xff0c;RESTful API 在微服务中的作用是什…

深度学习 YOLO 实现车牌识别算法 计算机竞赛

文章目录 0 前言1 课题介绍2 算法简介2.1网络架构 3 数据准备4 模型训练5 实现效果5.1 图片识别效果5.2视频识别效果 6 部分关键代码7 最后 0 前言 &#x1f525; 优质竞赛项目系列&#xff0c;今天要分享的是 &#x1f6a9; 基于yolov5的深度学习车牌识别系统实现 该项目较…

《QT从基础到进阶·二十二》QGraphicsView显示大量图形项item导致界面卡顿的解决办法

有时候因业务需要&#xff0c;paint函数在界面上绘制了成百上千个图形项Items&#xff0c;导致操作界面的时候有明显的卡顿感&#xff0c;下文会提供一种比较好的解决办法&#xff0c;先来了解下QGraphicsItem的缓存方式。 &#xff08;1&#xff09;setCacheMode(QGraphicsIt…

逐帧动画demo

用这一张图实现一个在跑的猎豹的动画 <!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><meta name"viewport" content"widthdevice-width, initial-scale1.0"><meta http-equiv"X…
最新文章