基础运算符

Swift的大部分运算符和C及OC相同,也分一元二元多元的,这里只记录一些Swift特有的性质或写法。

赋值运算符( = )

在等号右边是一个有多个值的元组时,它的成员值可以分解并同时分别赋值给常量或者变量:

let (x, y) = (, )
// x is equal to 1, and y is equal to 2

和C、OC不同的是,赋值运算符本身并不返回值,因此如下写法是错误的:

if x = y {
// this is not valid, because x = y does not return a value
}

这主要是为了防止其和相等运算符混淆。

取余运算符(%)

取余运算在有些语言中也被称为取模,不过在Swift中不能这样称,因为负数的时候,余数也是带符号的,比如 -9 % 4 = -1,并且,第二个操作数的符号是被忽略的,也就是说,

a % b 和 a % -b总是返回相同的值。

与C和OC中的取余运算符不同,Swift中的取余也可以用于浮点数:8 % 2.5 = 0.5

复合赋值运算符

比如a+=2意味着a=a+2,不过复合赋值运算符本身并不返回值,因此let b = a += 2 是错误的。

Nil合并运算符

nil合并运算符(a ?? b)在可选项a有值的时候展开a,如果a没有值,就返回b的值。a必须是一个optional值,并且b和a存储的值应该是统一类型。它的意思就是

(a != nil) ? a! : b  //这里第二个!是用来强制展开optional值的

nil合并运算符是一种优雅的写法,可读性也更高,并且,如果a有值,那么b将不会参与运算。

范围运算符

Swift有两个范围运算符,"..."和"..<",a...b表示从a到b并且包含a和b的范围,a..<b表示从a到b但不包含b的范围,此时如果a=b,则范围为空,当然,这两个都要求a不能大于b。

字符串和字符

Swift的字符串和字符语法很简单,也可以直接用+号连接多个字符串,并且Swift的字符串提供一种快速、符合Unicode编码的文本处理工具。

并且,字符串中可以插入常量、变量、字面量、表达式。

Swift的string类型和Foundation框架中的NSString是相同的,如果是基于Cocoa的Foundation框架开发,那么所有NSString的API都可以用在Swift的String上。

字符串字面量

字符串字面量是指用双引号包围起来的定义好的字符序列。比如:let someString = "Some string literal value”。此时编译器会降someString的类型设定为String,因为它是用一个字符串字面量被初始化的。

字符串字面量可以包含一些特殊转义符号:

\0 (null), \\ (反斜杠), \t (水平tab), \n (换行符), \r (回车), \" (双引号) and \' (单引号)

也可以包含直接的Unicode纯量字符(Unicode scalar),Unicode scalar是指在某个指定范围内的任意Unicode代码点,它代表一个Unicode字符。在字符串中包含Unicode scalar时,用u开头,加上大括号包围的代码点数字。

let wiseWords = "\"Imagination is more important than knowledge\" - Einstein"
// "Imagination is more important than knowledge" - Einstein
let dollarSign = "\u{24}" // $, Unicode scalar U+0024
let blackHeart = "\u{2665}" // ♥, Unicode scalar U+2665
let sparklingHeart = "\u{1F496}" //

Swift学习笔记五的更多相关文章

  1. swift学习笔记(五)构造过程

    构造过程是为了使用某个类.结构体或枚举类型的实例而进行的准备过程.在构造过程中,对每一个属性进行了初始值预设和其它必要的准备和初始化工作. 与OC相比,swift的构造函数.不须要返回值.同一时候,在 ...

  2. 【swift学习笔记】二.页面转跳数据回传

    上一篇我们介绍了页面转跳:[swift学习笔记]一.页面转跳的条件判断和传值 这一篇说一下如何把数据回传回父页面,如下图所示,这个例子很简单,只是把传过去的数据加上了"回传"两个字 ...

  3. C#可扩展编程之MEF学习笔记(五):MEF高级进阶

    好久没有写博客了,今天抽空继续写MEF系列的文章.有园友提出这种系列的文章要做个目录,看起来方便,所以就抽空做了一个,放到每篇文章的最后. 前面四篇讲了MEF的基础知识,学完了前四篇,MEF中比较常用 ...

  4. (转)Qt Model/View 学习笔记 (五)——View 类

    Qt Model/View 学习笔记 (五) View 类 概念 在model/view架构中,view从model中获得数据项然后显示给用户.数据显示的方式不必与model提供的表示方式相同,可以与 ...

  5. java之jvm学习笔记五(实践写自己的类装载器)

    java之jvm学习笔记五(实践写自己的类装载器) 课程源码:http://download.csdn.net/detail/yfqnihao/4866501 前面第三和第四节我们一直在强调一句话,类 ...

  6. Swift学习笔记(一)搭配环境以及代码运行成功

    原文:Swift学习笔记(一)搭配环境以及代码运行成功 1.Swift是啥? 百度去!度娘告诉你它是苹果最新推出的编程语言,比c,c++,objc要高效简单.能够开发ios,mac相关的app哦!是苹 ...

  7. Learning ROS for Robotics Programming Second Edition学习笔记(五) indigo computer vision

    中文译著已经出版,详情请参考:http://blog.csdn.net/ZhangRelay/article/category/6506865 Learning ROS for Robotics Pr ...

  8. Typescript 学习笔记五:类

    中文网:https://www.tslang.cn/ 官网:http://www.typescriptlang.org/ 目录: Typescript 学习笔记一:介绍.安装.编译 Typescrip ...

  9. ES6学习笔记<五> Module的操作——import、export、as

    import export 这两个家伙对应的就是es6自己的 module功能. 我们之前写的Javascript一直都没有模块化的体系,无法将一个庞大的js工程拆分成一个个功能相对独立但相互依赖的小 ...

随机推荐

  1. 消息提示和消息推送插件toastr

    http://www.jq22.com/yanshi476 比较棒的消息提示和消息推送插件toastr function myIntervalshow() { // showPopup1(300, 1 ...

  2. hdu 3518(后缀数组)

    题意:容易理解... 分析:这是我做的后缀数组第一题,做这个题只需要知道后缀数组中height数组代表的是什么就差不多会做了,height[i]表示排名第i的后缀与排名第i-1的后缀的最长公共前缀,然 ...

  3. HTTP协议中的长连接和短连接(keep-alive状态)

    什么是长连接 HTTP1.1规定了默认保持长连接(HTTP persistent connection ,也有翻译为持久连接),数据传输完成了保持TCP连接不断开(不发RST包.不四次握手),等待在同 ...

  4. Filezilla 多目录的访问设置

    [转:http://hi.baidu.com/yangjie312/blog/item/125a8405423d896d03088171.html] 设置好主目录之后,点击“Add”按钮可以把其余的目 ...

  5. javascript 继承、命名空间实现分享

    命名空间是用来组织和重用代码的编译单元,在大型项目开发中javascript使用的越来越多时,我们就应该将项目里的js类库管理起来,如何将自己进行归类管理,防止命名冲突,但是Javascript默认不 ...

  6. 使用 gradle 编译多版本 android 应用

    最近要做一个 android 产品的变种版本,需要编出不同版本,每个版本有不同的包名.图标等等,和一些特有的逻辑. 很久之前做过类似的工作,当时没有 gradle, 用的方法是把公共代码抽成一个 li ...

  7. Windows安装pomelo过程

    安装总要出点状况的.操作系统是win7 64bit. 为了保证顺利,打开的是VS2012命令行提示.运行 npm install -g pomelo 经过一系列输出,最后安装提示完成了.但是输入 po ...

  8. 学习笔记——XSLT转换器的使用(Xalan和Saxon) .(转)

    转自:http://blog.csdn.net/crystalbruce/article/details/7401602 XSLT分为两类: 1:客户端转换:需要浏览器的支持. 2:服务器转换:需要使 ...

  9. CSAPP(2):程序的汇编表示(Linux版)

    程序员学习汇编代码的需求随着时间的推移发生了变化,开始时只要求程序员能直接用汇编语言编写程序,现在则要求他们能够阅读和理解编译器产生的代码. 下面是针对32位机器 数据格式 Intel用术语“字”(w ...

  10. Tkinter教程之Canvas篇(4)

    本文转载自:http://blog.csdn.net/jcodeer/article/details/1812091 '''Tkinter教程之Canvas篇(4)''''''22.绘制弧形'''#  ...