Swift条件判断中逗号的使用方法示例
前言
众所周知在Swift语言中,Bool值是用来进行条件判断的,可以进行&&以及||的操作,从而实现多个表达式共同判断。
但是由于Swift中存在可选项绑定,或者说是用let展开可选项的原因,有些地方条件判断中不能够使用&&来进行处理。比如,我们要在变量hasValue确实有值,且参数个数paramCount大于0的时候,执行代码,一般我们可以这样写:
if hasValue != nil && paramCount > 0 { ... }
但是如果我们在后续代码中中要使用hasValue的值的话,就不能够只判断hasValue是否为nil了,而应该使用可选项绑定把值给读出来,也就是下面的代码:
if let hasValue = hasValue { if paramCount > 0 { ... } }
由于let hasValue = hasValue
并不会返回一个Bool值,导致两个条件不能够使用&&进行判断,这个时候,我们就要使用所谓的逗号了,也就是可以写成:
if let hasValue = hasValue, paramCount > 0 { ... }
这个样子就可以满足我们的需求,代码逼着上面的代码少了一层判断,看起来会更加友好。特别是当我们需要可选项绑定多个变量时,这样写会更加的方便。如:
if let a = a, let b = b, let c = c, let d = d, e < 0, f > 0 { ... }
如果不使用,进行分割,而是一个个判断的话,将会进入多重判断的坑里,让代码臃肿不堪。
总的来说,条件判断中逗号的作用类似于&&,但是它除了连接Bool值,也可以用来连接可选项绑定的判断。
总结
以上就是这篇文章的全部内容了,本文还有许多不足,希望本文的内容对大家的学习或者工作具有一定的参考学习价值,如果有疑问大家可以留言交流,谢谢大家对我们的支持。
相关推荐
-
Swift中的条件判断、循环、跳转语句基础学习笔记
一.引言 一种编程语言的强大与否,很大程度上取决于其提供的程序流程控制方案,就如使用汇编语言实现复杂的程序流程是一件痛苦的事情.Swift中提供了许多强大的流程控制语句,例如快速遍历for-in,while循环,repeat-while循环,switch选择等,需要注意的是,在Swift2.2中,for(a;b;c)循环已经被弃用掉,并且Swift中的Switch语句也更加强大,可以处理任意数据类型. 二.for-in循环 配合范围运算符,for-in循环可以用来执行确定次数的循环,示例如下:
-
Swift流程控制之循环语句和判断语句详解
Swift提供了所有c类语言的控制流结构.包括for和while循环来执行一个任务多次:if和switch语句来执行确定的条件下不同的分支的代码:break和continue关键字能将运行流程转到你代码的另一个点上. 除了C语言传统的for-condition-increment循环,Swift加入了for-in循环,能更加容易的遍历arrays, dictionaries, ranges, strings等其他序列类型. Swift的switch语句也比C语言的要强大很多. Swift中swi
-
Swift条件判断中逗号的使用方法示例
前言 众所周知在Swift语言中,Bool值是用来进行条件判断的,可以进行&&以及||的操作,从而实现多个表达式共同判断. 但是由于Swift中存在可选项绑定,或者说是用let展开可选项的原因,有些地方条件判断中不能够使用&&来进行处理.比如,我们要在变量hasValue确实有值,且参数个数paramCount大于0的时候,执行代码,一般我们可以这样写: if hasValue != nil && paramCount > 0 { ... } 但是如果
-
SpringBoot中整合MyBatis-Plus的方法示例
MyBatis 框架相信大家都用过,虽然 MyBatis 可以直接在 xml 中通过 SQL 语句操作数据库,很是灵活.但正其操作都要通过 SQL 语句进行,就必须写大量的 xml 文件,很是麻烦.于是 MyBatis-Plus 应运而生,作为 MyBatis 的增强工具,更是为我们开发效率得到了质的飞跃. 一.简介 1.MyBatis MyBatis 是一款优秀的持久层框架,它支持自定义 SQL.存储过程以及高级映射.MyBatis 免除了几乎所有的 JDBC 代码以及设置参数和获取结果集的工
-
Go语言中节省内存技巧方法示例
目录 引言 预先分配切片 结果 结构体中的字段顺序 极端情况 使用 map[string]struct{} 而不是 map[string]bool 结果 引言 GO虽然不消耗大量内存,但是仍有一些小技巧可以节省内存,良好的编码习惯是每一个程序员都应该具备的素质. 预先分配切片 数组是具有连续内存的相同类型的集合.数组类型定义时要指定长度和元素类型. 因为数组的长度是它们类型的一部分,数组的主要问题是它们大小固定,不能调整. 与数组类型不同,切片类型无需指定长度.切片的声明方式与数组相同,但没有数
-
Linux中在防火墙中开启80端口方法示例
linux如果刚安装好防火墙时我们常用的端口是没有增加的,也就是说不能访问,那么要怎么把常用端口增加到防火墙通过状态呢,下面我们以80端口为例子吧. 最近自己在学习Linux.搭建一个LNMP环境.在测试时一切都好.然后重启Linux后.再次访问网站无法打开.最终原因是在防火墙中没有加入 80 端口的规则.具体方法如下: 在CentOS下配置iptables防火墙,是非常必要的.来我们学习如何配置!,其它版本一下: 1.打开iptables的配置文件: 代码如下 vi /etc/sysconfi
-
在Python中使用gRPC的方法示例
本文介绍了在Python中使用gRPC的方法示例,分享给大家,具体如下: 使用Protocol Buffers的跨平台RPC系统. 安装 使用 pip pip install grpcio pip install grpcio-tools googleapis-common-protos gRPC由两个部分构成,grpcio 和 gRPC 工具, 后者是编译 protocol buffer 以及提供生成代码的插件. 使用 编写protocol buffer 使用 gRPC 首先需要做的是设计 p
-
Go语言中的字符串处理方法示例详解
1 概述 字符串,string,一串固定长度的字符连接起来的字符集合.Go语言的字符串是使用UTF-8编码的.UTF-8是Unicode的实现方式之一. Go语言原生支持字符串.使用双引号("")或反引号(``)定义. 双引号:"", 用于单行字符串. 反引号:``,用于定义多行字符串,内部会原样解析. 示例: // 单行 "心有猛虎,细嗅蔷薇" // 多行 ` 大风歌 大风起兮云飞扬. 威加海内兮归故乡. 安得猛士兮守四方! ` 字符串支持转义
-
在Angular中使用JWT认证方法示例
本文介绍了在Angular中使用JWT认证方法示例,分享给大家,具体如下: 项目地址: grading-system 基于session的认证和基于token的认证的方式已经被广泛使用.在session认证中,服务端会存储一份用户登录信息,这份登录信息会在响应时传递给浏览器并保存为Cookie,在下次请求时,会带上这份登录信息,这样就能识别请求来自哪个用户. 在基于session的认证中,每个用户都要生成一份session,这份session通常保存在内存中,随着用户量的增加,服务端的开销会增大
-
SpringBoot 中使用JSP的方法示例
本文介绍了SpringBoot 中使用JSP的方法示例,分享给大家,具体如下: 依赖: <parent> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-parent</artifactId> <version>1.5.1.RELEASE</version> <relativePath/> <!-- l
-
idea中lombok启用的方法示例
IDEA(版本:2020.1)中使用 lombok 有几个以下前提: 1. IDEA 安装了 lombok 插件,具体安装方法如下:File => Settings => Plugins => Marketplace.在 Marketplace 中搜索 lombok 并安装,安装成功后 lombok 会显示在 installed 标签下(如下图) 2. 启用了 Annotation processing,启用方法:File => Settings => Build, Exec
-
SpringBoot中使用多线程的方法示例
一.介绍 Spring是通过任务执行器(TaskExecutor)来实现多线程和并发编程,使用Spring提供的ThreadPoolTaskExecutor来创建一个基于线城池的TaskExecutor.在使用线程池的大多数情况下都是异步非阻塞的.节省更多的时间,提高效率. 工作原理 当主线程中调用execute接口提交执行任务时:则执行以下步骤:注意:线程池初始时,是空的. 如果当前线程数<corePoolSize,如果是则创建新的线程执行该任务 如果当前线程数>=corePoolSize,
随机推荐
- python脚本实现Redis未授权批量提权
- 正则表达式基础
- 批处理bat删除指定天数日期之前的文件
- C++程序中使用Windows系统Native Wifi API的基本教程
- PHP5 的对象赋值机制介绍
- 跟老齐学Python之编写类之一创建实例
- Linux中使用C语言实现基于UDP协议的Socket通信示例
- JavaScript 中的事件教程
- 安装和使用percona-toolkit来辅助操作MySQL的基本教程
- 如何配置全世界最小的 MySQL 服务器
- 进阶之初探nodeJS
- SQL SERVER使用REPLACE将某一列字段中的某个值替换为其他的值
- jquery链式操作的正确使用方法
- 用console.table()调试javascript
- ASP.NET程序中用Repeater实现分页
- nginx+vue.js实现前后端分离的示例代码
- 使用java的注解(用在java类的方法上的注解)方法
- MySql 8.0.11 安装过程及 Navicat 链接时遇到的问题小结
- 自定义Vue中的v-module双向绑定的实现
- 一个吸顶Item的简单实现方法分享