1. 在Swift和Java基本运算符语法中,赋值运算符、算术运算符、求余运算符、自增和自减运算、一元负号运算符、一元正号运算符、逻辑运算、比较运算符、三目运算符(Ternary Conditional Operator)等这些运算符用法大同小异,接近相同,就不在分析了,下面对一些Swift中特有的语法进行分析。

2. 空合运算符

空合运算符(Nil Coalescing Operator):空合运算符(a ?? b)将对可选类型a进行空判断,如果a包含一个值就进行解封,否则就返回一个默认值b.这个运算符有两个条件:

  • 表达式a必须是Optional类型
  • 默认值b的类型必须要和a存储值的类型保持一致

下文例子采用空合并运算符,实现了在默认颜色名和可选自定义颜色名之间抉择,代码如下:

let defaultColorName = "red"
var userDefinedColorName:String?   //默认值为nil
var colorNameToUse = userDefinedColorName ?? defaultColorName
//userDefinedColorName的值为空 ,所以colorNameToUse的值为`red`

userDefinedColorName变量被定义为一个可选字符串类型,默认值为nil。由于userDefinedColorName是一个可选类型,我们可以使用空合运算符去判断其值。在上一个例子中,通过空合运算符为一个名为colorNameToUse的变量赋予一个字符串类型初始值。 由于userDefinedColorName值为空,因此表达式userDefinedColorName ?? defaultColorName返回默认值,即red

另一种情况,分配一个非空值(non-nil)给 userDefinedColorName,再次执行空合运算,运算结果为封包在userDefaultColorName中的值,而非默认值,代码如下:

userDefinedColorName = "green"
colorNameToUse = userDefinedColorName ?? defaultColorName
//userDefinedColorName非空,因此colorNameToUsede的值为绿色

3. 区间运算符

区间运算符:Swift 提供了两个方便表达一个区间的值的运算符。

闭区间运算符:闭区间运算符(a...b)定义一个包含从ab(包括ab)的所有值的区间,b必须大于a。 ‌ 闭区间运算符在迭代一个区间的所有值时是非常有用的,如在for-in循环中,代码如下:

 for i in 1...5{print("i = \(i) * 5 = \(i * 5)")}
// i = 1 * 5 = 5
// i = 2 * 5 = 10
// i = 3 * 5 = 15
// i = 4 * 5 = 20
// i = 5 * 5 = 25

半开区间运算符:半开区间(a..<b)定义一个从ab但不包括b的区间。 之所以称为半开区间,是因为该区间包含第一个值而不包括最后的值。半开区间的实用性在于当你使用一个0始的列表(如数组)时,非常方便地从0数到列表的长度。代码如下:

var names :[String] = ["Anna", "Alex", "Brian", "Jack"]let count = names.countfor i in 0..<count{print("第\(i)个名字叫\(names[i])")}
// 第 1 个人叫 Anna
// 第 2 个人叫 Alex
// 第 3 个人叫 Brian
// 第 4 个人叫 Jack

转载于:https://www.cnblogs.com/xumaodun/p/5568428.html

基本运算符中Swift和Java的比较相关推荐

  1. Swift和Java在函数(method/方法)方面的比较

    1. 函数是用来完成特定任务的独立的代码块.Swift中函数的使用比Java中更灵活,在 Swift 中,可以把函数当做别的函数的参数,也可以从其他函数中返回函数.函数的定义可以写在在其他函数定义中, ...

  2. java 运算符_详解Java表达式与运算符

    课程导言 [变量的赋值与计算都离不开表达式,表达式的运算依赖于变量.常量和运算符.本节课讨论Java的表达式的构成.常量的定义.运算符的分类及应用.通过本课的学习你将掌握运用表达式和运算符完成变量赋值 ...

  3. Swift 语法初探(1):Swift 与 Java 的小比较

    这学期在学习 Swift 语言,然后上学期学习了 Java 语言,特此对这两种语言做了一些简单的比较(这是第一部分,后面还有),帮助自己巩固记忆和区分一些基本的语法点.虽然意义好像也不太大(好像一般都 ...

  4. Swift与Java语法结构对比

    (文中的示例代码均来自The Swift Programming Language:https://developer.apple.com/library/ios/documentation/Swif ...

  5. android java包_android SDk中常用的java包介绍

    下面是android SDK中API中的主要java包的功能简介: android.app :提供高层的程序模型.提供基本的运行环境 android.content :包含各种的对设备上的数据进行访问 ...

  6. 《LeetCode力扣练习》第94题 二叉树的中序遍历 Java

    <LeetCode力扣练习>第94题 二叉树的中序遍历 Java 一.资源 题目: 给定一个二叉树的根节点 root ,返回它的 中序 遍历. 示例 1: 输入:root = [1,nul ...

  7. win10安装JDK cmd中可以运行java,但不能用javac,解决方案

    win10安装JDK cmd中可以运行java,但不能用javac,解决方案 参考文章: (1)win10安装JDK cmd中可以运行java,但不能用javac,解决方案 (2)https://ww ...

  8. jsp项目中连接数据库解决java.lang.ClassNotFoundException: com.mysql.jdbc.Driver的问题

    jsp项目中连接数据库解决java.lang.ClassNotFoundException: com.mysql.jdbc.Driver的问题 参考文章: (1)jsp项目中连接数据库解决java.l ...

  9. eclipse新建一个java_Eclipse中新建一个java源文件的步骤

    [简答题]请根据第六次讨论题目进行讨论.并将你的讨论回答的ppt传到此处. [简答题]P152页,习题9 一.二(2,3).请将回答的word文档上传到此处. [简答题]第五次讨论:讨论题目参见课程网 ...

最新文章

  1. es了解集群中属性 4
  2. linux shell ddos木马,利用Shell 脚本解决DDOS攻击问题
  3. 介绍KeyTool GUI工具2款
  4. nginx 路由配置
  5. 点滴小组KTV点歌系统简介
  6. 这是我见过最全面的Python装饰器详解 没有学不会这种说法
  7. 在eclipse里如何快速定位到某一行?
  8. 前端悬浮窗效果_web前端入门到实战:css过渡和动画解析文
  9. 用户变量和系统变量的区别_环境变量的用户变量与系统变量的区别
  10. safari 下载的文件在app打开
  11. javascript中replace()用法详解+match() 定义和用法
  12. VMware Workstation 16.2 Pro for Windows SLIC 2.6 Unlocker
  13. java restsharp_RestSharp 一个.NET(C#)的HTTP辅助类组件
  14. js字符串分割split()
  15. vs2010下配置HPSocket教程,详细截图附入门demo源码
  16. Teamviwer操作(请激活复选框,证明是本人操作解决办法)
  17. Celery+django+redis异步执行任务
  18. 如何破解excel打开密码
  19. android自定义滚动日期,Android基于wheelView实现自定义日期选择器
  20. C语言入门:立体几何计算题

热门文章

  1. 快速幂算法c语言求a的n次方,快速幂运算模板(求n^k以及前几位或后几位)
  2. 计算机组成原理—存储系统大纲
  3. 最长上升子序列LIS 动态规划 二分查找算法
  4. extern 关键字的作用
  5. Wannafly交流赛1: D. 迷宫2(最短路)
  6. bzoj 1611: [Usaco2008 Feb]Meteor Shower流星雨(DP)
  7. 2208: [Jsoi2010]连通数(Trajan+bitset)
  8. 2016CCPC合肥赛区总结
  9. 全文搜索引擎 Elasticsearch 入门(ik,kibana,x-pack)
  10. python机器学习案例系列教程——CTR/CVR中的FM、FFM算法