如何优雅地搞定多个判断,别告诉我你只会if-else和switch

GO语言基础教程(38)Go条件判断语句之switch语句:Go语言switch语句全揭秘:比奶茶配料选择还简单的判断神器! Go语言的switch语句简直是条件判断里的“瑞士军刀”!它不仅比if-else更清晰直观,还自带隐藏技能:不需要break防掉坑、支持多条件匹配、甚至能当类型检测器用。本文用一堆接地气的代码示例,带你玩转switch的各种骚操作——从基础分支到类型判断,从fallthrough的妙用到空接口处理。看完你会发现,原来代码中的条件判断可以写得像点奶茶一样简单直白! 阅读详情

最近在弄个人网站,开始更系统的思考一些优雅写法,之前工作中经常运用到的多状态操作

最开始是这样写,写好一个, 其他复制粘贴,虽然直接,但是代码块略微庞大,这种简单赋值尚且如此,更不用说其他复杂操作了

let room = this.$route.path.split('/').splice(-1).join()
let current = 0
if(room === 'porch'){
   current=1
}else if(room === 'living') {
    current=2
}else if(room === 'dining') {
    current=3
}else if(room === 'study') {
    current=4
}else if(room === 'happy') {
    current=5
}else if(room === 'balcony') {
    current=6
}else if(room === 'bedroom') {
    current=7
}else if(room === 'washroom') {
    current=8
}

后来对于这种简单的 我就改成switch了

 let room = this.$route.path.split('/').splice(-1).join()
 let current      
 switch(room){
    case 'porch':
        current=1
        break
    case 'living':
        current=2
        break
    case 'dining':
        current=3
        break
    case 'study':
        current=4
        break
    case 'happy':
        current=5
        break
    default:
        current=0
        break
 }

但是依然觉得有点low呀,人生还是要不断尝试,果然还是有更好的方式,
 

let room = this.$route.path.split('/').splice(-1).join()
let item = {
  'porch': [1], // 之所以用数组是为了方便加其他参数与操作
  'living': [2],
  'dining':[3],
  'study': [4],
  'happy': [5],
  'balcony': [6],
  'default':[0]
}


let current = 0
const roomEvent= (room) => {
  let action = item [room] || item ['default']
  current = action[0] 
	
}
// 调用传参即可
roomEvent(room)

最后,还可以继续尝试……

比如Map,Map优点很多,在这里比较有用的是Map 的键可以是任何值

let room = this.$route.path.split('/').splice(-1).join()
let item = new Map({
  ['porch', [1]], // 之所以用数组是为了方便加其他参数与操作
  ['living', [2]],
  ['dining',[3]],
  ['study', [4]],
  ['happy', [5]],
  ['balcony', [6]],
  ['default',[0]]
})


let current = 0
const roomEvent= (room) => {
  let action = item.get(room) || item.get('default')
  current = action[0] 
}
roomEvent(room)

对于我来说,到这种程度已经足够了,面对更为复杂的逻辑,我看大牛还可以用正则匹配,更适合那种比较规律的状态码,不过我这里不太适合。

新手必看:用C++ switch和if-else两种方法搞定OpenJudge简单计算器(附除零错误处理) 本文详细介绍了如何使用C++的switch和if-else两种方法实现OpenJudge简单计算器,并处理除零错误等边界情况。通过对比两种条件分支的优缺点,帮助编程新手掌握逻辑构建和异常处理技巧,特别适合信息学奥赛和NOI参赛者学习。 阅读详情

相关推荐

C# 三元运算符:别再写又臭又长的if-else了,一行代码搞定条件判断

本文深入解析C#三元运算符(?:)的语法与应用,教你如何用一行代码替代冗长的if-else条件判断。通过实战对比和高级技巧展示,帮助开发者提升代码简洁性与可读性,特别适合.NET开发中需要精简条件逻辑的场景。

weixin_42523693的博客 203

干掉过多的 if else,让你的代码更优雅

学习改变命运,技术铸就辉煌。大家好,我是銘,全栈开发程序员。写代码时候,有时候条件过多,会有很多 if else ,代码看起来很乱,不够优雅,那如何让代码更优雅呢,如何让代码可读性更强呢,那銘哥就来教你怎么做。注意啊,是过的 if-else ,如果只是三四个,那就没必要优化了。写这篇文章之前,我看网上很多说用 switch case 啊,首先不比较 if else 与 switch case 效率问题的,只从代码整洁度来看二者没啥区别啊!我们这里更重要的是代码整洁度问题,为什么呢?来看下文的比较。

weixin_42104279的博客 871

MATLAB新手必看:别再只会顺序执行了,for/while循环和if/switch分支的保姆级入门指南

本文为MATLAB新手提供了for/while循环和if/switch分支的保姆级入门指南,帮助读者掌握流程控制技巧,提升代码效率与灵活性。通过实战案例详解循环结构和条件分支的应用,解决数据批量处理、条件执行等常见编程难题,适合希望突破顺序执行局限的MATLAB初学者。

weixin_30700977的博客 379

三元表达式多个判断条件

这是判断多个条件的写法 示例 :0 已创建 1 审核中 2 审核通过 3 审核驳回 a == 0 ? ‘已创建’ : (a == 1 ? ‘审核中’ : (a == 2 ? ‘审核通过’ : ‘审核驳回’)) 这是判断三个条件的写法 {{item.ApplyState == "0" ? '未生成订单' : (item.ApplyState == "1" ? '已生成订单' : '已完成发货')}} ...

qq_38810813的博客 1万+

ICLR 2022)ODConv:即插即用的动态卷积 (附代码)

一定程度上讲,ODConv可以视作CondConv的延续,将CondConv中一个维度上的动态特性进行了扩展,同时了考虑了空域、输入通道、输出通道等维度上的动态性,故称之为全维度动态卷积。ODConv是一种动态卷积算法,它的原理是在卷积过程中,根据输入数据的特征动态地调整卷积核的形状和大小,以适应不同的输入数据。具体来说,ODConv通过引入一个可学习的形变模块,根据输入数据的特征动态地调整卷积核的形状和大小,从而提高了卷积神经网络的性能。此外,相比常规卷积,动态卷积的卷积核参数往往是其n倍。

PLANTTHESON的博客 2万+

ubunut 系统安装k8s集群

修改配置文件 kube-metrics-server.yaml 添加监控数据采集容器启动参数,启动 tls 证书验证,否则监控容器接口验证不通过,无法采集监控数据。kube-metrics-server.yaml 140行左右添加参数 --kubelet-insecure-tls。服务器添加配置(配置三台阿里云时间同步服务器作为时间源,本机作为时间同步服务器)客户端配置(第一个源选用集群内的 192.168.10.20 )时间同步配置文件参考如下。

weixin_57489252的博客 1330

如何对多个if-else判断进行优化

当我们遇到需要多个条件判断的业务操作时,最简单直接的办法就是用多个if-else判断,虽然能够实现,但当判断条件过多,甚至是多元判断时,我们的代码就会变得非常不好阅读和维护。 举个例子 这里也可以用switch if(status === '1'){ return '未审批' }else if(status === '2'){ return '审批中' }else if(status === '3'){ return '审批通过' }else

伟深么的博客 2万+

波分复用技术原理

波分复用原理 把不同波长的光信号复用到同一根光纤中进行传送,这种方式我们把它叫做波分复用( Wavelength Division Multiplexing ) 一根光纤被划分为多个波道,多个波长以一定的间隔隔开,在光纤中独立传输。 波分复用应用演示 如果将WDM系统看作交通系统,光纤可以看作是多个车道的公用道路。 各种类型的业务就像货物一样,被打包装载到车辆中。 车辆按照分配的车道行驶至目的地,完成货物的运输。 想要提高波分复用系统的传输容量,就要增加波道数量或是提升单波传...

m0_63251770的博客 9997

js前端条件语句优化

在实际开发中,由于应用需求可能存在多种情况场景,那处理时就需要列举所有对应的情况去处理,常见的处理可能会用到if…else去处理,但是如果条件判断太多,就会导致代码过于冗余难以维护,因此我们可以使用其他的方式(includes、对象存储、不满足return、运算符)去优化、较少代码冗余量。

weixin_44750465的博客 608

Unity实时控制佳能单反拍照全流程(附EDSDK 3.6.1配置避坑指南)

本文详细介绍了在Unity中实时控制佳能单反相机进行拍照的完整流程,重点提供了EDSDK 3.6.1的配置与避坑指南。内容涵盖从SDK获取、环境搭建、相机初始化、参数设置到实现拍照控制,并深入探讨了实时取景的延迟优化方案与资源管理,旨在帮助开发者高效集成专业相机,提升AR/VR及摄影测量等应用的视觉输入质量。

go5gopher的博客 184

STM32H7系列QSPI内存映射模式与MPU配置冲突分析

本文分析了STM32H7系列QSPI内存映射模式与MPU配置冲突导致系统卡死的问题。通过解析内存保护管理单元机制,提供了MPU配置调整方案,包括禁用MPU或精细配置QSPI区域权限,确保内存映射模式正常访问外部Flash,避免HardFault错误。

js777的博客 740

C语言新手必看:用switch-case和if-else搞定PTA‘新年倒计时’(附闰年判断详解)

本文详细讲解了如何用C语言的选择结构(switch-case和if-else)实现PTA平台上的‘新年倒计时’题目,重点解析了闰年判断和月份天数差异的处理技巧。通过对比两种结构的优劣,帮助新手掌握高效、清晰的编程逻辑,提升解决实际问题的能力。

weixin_31364787的博客 300

Android 13 Settings蓝牙列表卡顿问题排查及优化过程

此时我们的卡顿优化基本完成了,我们应该要考虑内存是否会泄漏,如果大家不知道哪些需要回收可以用leakcanary和android profiler进行内存检测,看代码有没有内存泄漏。

龚礼鹏的博客 2547

C++新手必看:用数组和switch搞定星期转换,别再只会if-else了

本文为C++新手提供了从if-else到数据结构驱动的逻辑设计升级指南,重点介绍了使用数组和switch语句实现数字到星期的转换。通过对比传统if-else方案的局限性,展示了数组映射和switch语句在代码简洁性、可维护性和性能上的优势,帮助开发者掌握更高效的编程方法。

weixin_42676824的博客 366

在MATLAB和Simulink中设计并仿真一个智能建筑能效优化系统

智能建筑能效优化是现代建筑管理的重要组成部分,旨在通过智能化手段降低能源消耗、减少碳排放并提高居住舒适性。通过Simulink进行智能建筑能效优化仿真,可以验证控制策略的有效性、优化系统设计并降低开发成本。以下是如何在MATLAB和Simulink中设计并仿真一个智能建筑能效优化系统的详细步骤。通过上述步骤,我们成功设计并实现了基于Simulink的智能建筑能效优化仿真。该系统能够模拟复杂的建筑环境,验证能效优化策略的有效性,并通过优化设计提高建筑的能源利用效率和居住舒适性。

xiaoheshang_123的博客 138

DSShop移动商城网店系统 反序列化RCE漏洞复现

DSShop单店铺移动商城网店系统的getCartList方法的cart参数存在php反序列化漏洞,攻击者可以通过漏洞执行任意代码,获取服务器权限。

0xSec 1472

策略模式-减少代码中大量的if-else与switch

策略模式策略模式的应用场景策略模式例子-支付策略模式在源码中的应用Comparator构造器TreeMap构造方法工作中-工作流DispatcherServlet-几种模式的混合 策略模式的应用场景 策略模式也可以见名知意,其实很多设计模式的名字取的是很贴切的。策略模式的经典例子就是商场打折策略,根据不同的打折方案来选择不同的打折策略。在不用策略模式之前,我们可能在一个类中用if-else就搞定了。 但是很显然是不够优雅的。 当我们需要在几种算法中动态的选择一种,就需要用到策略模式了。 策略模式例子-支付

路辉的博客 446

Statistics and Machine Learning Toolbox

Statistics and Machine Learning Toolbox(带书签),MATLAB统计学习工具

【Day 04 Java转Python】告别switch-case——Python的条件与循环优雅写法

Java的和传统for循环就像手摇拖拉机,虽然功能强大,但操作起来有点累赘。Python的和for-in则像电动车,少了很多机械步骤,让你更专注于前进的方向。今日金句Python的能用简单逻辑解决的事,别整花里胡哨的语法。Python的for遍历万物皆可迭代,别再数下标了。动手试试用while循环改写上面的质数判断,并思考:哪种循环更适合这个场景?欢迎在评论区分享你的代码。下篇预告:Day 5 我们将深入函数与参数魔法,看看Python如何用*args和**kwargs。

bianyuan172的博客 399

VC中sqlite的使用

在VC中对sqlite的使用,实现数据库大批数据的快速插入,读取数据库中的数据在ListCtrl中显示

OV9734 DATASHEET,完整规格书

OV9734完整规格书,包括电气参数,尺寸规格,寄存器配置表等

【Java从入门到入土】03:if-else已死?程序逻辑控制的现代写法

本文介绍了Java程序逻辑控制的现代写法优化方案。首先分析了传统if、switch和三目运算符的适用场景,强调避免多层嵌套的"箭头代码"。重点讲解了switch从Java 7到17的进化历程,包括字符串支持、表达式语法和模式匹配等新特性。针对多层if嵌套问题,提出了4个重构技巧:使用卫语句提前return、提取方法拆分逻辑、Optional处理空指针、策略模式替代多分支判断。这些方法能有效提升代码可读性和维护性,实现从"臃肿嵌套"到"扁平清晰"的转

老前端的功夫 377

android 蓝牙通讯demo

android 下蓝牙通讯demo,实现了发现蓝牙,使能蓝牙,通过蓝牙发送消息。

使用工厂设计模式消除多个if-switch,简单易懂,代码解耦!

这只是个小demo,但我认为通过该工厂设计模式能够很大程度的改善那些臃肿的代码,要知道,类并不值钱,多创建一些类来去耦合,是很必要的。

机智的爆爆哥 584

C#条件语句实战:用迷宫寻宝游戏掌握if-else与switch精髓

条件语句是程序逻辑决策的基础能力,其本质是根据输入状态选择不同执行路径。理解if-else的嵌套逻辑与switch的多态映射原理,不仅能避免意大利面条式代码,更能支撑游戏开发中状态机、碰撞检测、指令解析等核心机制。在C#控制台迷宫寻宝项目中,通过格子类型判断、玩家四阶段状态流转、方向键映射等真实场景,体现条件结构如何承载游戏规则、保障可扩展性,并自然支持毒雾区域、传送阵、时间限制等机制演进。本文以零基础可运行的小项目为载体,将抽象语法转化为具象交互,让if-else和switch真正成为构建响应式系统的技术

weixin_33507732的博客 541

新手必看:用C++ switch和if-else两种方法搞定《信息学奥赛一本通》2058计算器题

本文详细解析了《信息学奥赛一本通》2058题计算器题的两种C++实现方法:switch和if-else。通过对比两种分支结构的优缺点,帮助编程新手理解多分支逻辑处理的技巧,提升代码效率和可读性,适合信息学奥赛初学者学习参考。

weixin_30074763的博客 260

新手必看:用C++ switch和if-else两种方法搞定‘简单计算器’(附除零错误处理)

本文详细介绍了使用C++实现简单计算器的两种方法:switch和if-else,并特别强调了除零错误处理的重要性。通过对比分析两种方案的优缺点,帮助编程新手和信息学奥赛(如2058题)参赛者掌握分支结构的核心逻辑与工程实践技巧,提升代码健壮性和可维护性。

weixin_31412781的博客 311

Kaitai Struct Compiler 的 switch 类型:快速搞定二进制格式标签联合的完整指南

Kaitai Struct Compiler 是 Kaitai Struct 项目的官方编译器,它让你用一份声明式描述文件(`.ksy`)定义二进制格式,然后一键编译成 C、C++、C#、Go、Java、JavaScript、Lua、Nim、PHP、Perl、Python、Ruby、Rust、Zig 等语言的可读代码。其中最实用的特性之一,就是本文主角 **`switch` 类型**——它能把二进

gitblog_00125的博客 913
上一篇: 微信小程序-实现安卓系统只预览不下载pdf文件
驚鴻入梦
博客等级 码龄10年 23粉丝 21原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值