基础运算符

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学习笔记】二.页面转跳数据回传

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

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

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

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

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

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

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

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

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

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

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

  7. swift学习笔记5——其它部分(自动引用计数、错误处理、泛型...)

    之前学习swift时的个人笔记,根据github:the-swift-programming-language-in-chinese学习.总结,将重要的内容提取,加以理解后整理为学习笔记,方便以后查询 ...

  8. swift学习笔记4——扩展、协议

    之前学习swift时的个人笔记,根据github:the-swift-programming-language-in-chinese学习.总结,将重要的内容提取,加以理解后整理为学习笔记,方便以后查询 ...

  9. swift学习笔记3——类、结构体、枚举

    之前学习swift时的个人笔记,根据github:the-swift-programming-language-in-chinese学习.总结,将重要的内容提取,加以理解后整理为学习笔记,方便以后查询 ...

随机推荐

  1. Java关键字介绍

    关键字 描述 abstract 抽象方法,抽象类的修饰符 assert 断言条件是否满足 boolean 布尔数据类型 break 跳出循环或者label代码段 byte 8-bit 有符号数据类型 ...

  2. 探究toString()和valueOf()

    1.用法如下:toString()方法:返回对象的字符串表示. 对象 操作 Array 将 Array 的元素转换为字符串.结果字符串由逗号分隔,且连接起来. Boolean 如果 Boolean 值 ...

  3. C++ 几种构造函数的区分和调用

    class A { public: A(); //默认构造 A( A& a ); //copy构造 const A& operator=( const A& a ); //赋值 ...

  4. 作用域链–JS基础核心之一

    JS中的作用域,大家都知道的,分为全局作用域和局部作用域,没有块级作用域,听起来其实很简单的,可是作用域是否能够有深入的了解,对于JS代码逻辑的编写成功率,BUG的解决能力,以及是否能写出更优秀的代码 ...

  5. atitit.提升开发效率---mda 软件开发方式的革命

    atitit.提升开发效率---mda 软件开发方式的革命 1. 软件开发方式的革命开发工具的抽象层次将再次提升 1 2. 应用框架和其实现相分离 2 3. 目前的问题模型和代码不同步 2 4. MD ...

  6. Quartz与Spring整合进行热部署的实现(一)

    先来几张实现图 任务管理页 新建任务管理.目前实现叫简单的需求...若各位同学要实现复杂的设计...quartz都有提供强大的支持.小弟目前的需求做到这已经够用了. 接下来.我们如何实现quartz的 ...

  7. jmeter随笔(9)--有两种编码风格,导致数据乱码

    问题:在一个网站,有两种编码风格,导致数据乱码 解决办法: 1.首先设置jmeter的配置文件 2.针对要求是utf-8格式的这样的请求,做单独的编码处理(beanshell处理) 3.运行,在htm ...

  8. keepalived安装配置(nginx)

    环境:centos 6.4 64bit 应用:nginx 目的:keepalived可以让两台服务器处于主备关系,如果主的挂了,备的取得VIP(或者互为主备等关系,文字游戏不纠结), 以实现服务器的高 ...

  9. leetcode:ZigZag Conversion 曲线转换

    Question: The string "PAYPALISHIRING" is written in a zigzag pattern on a given number of ...

  10. Redis中的批量删除数据库中的Key

    本文参考:http://blog.csdn.net/spring21st/article/details/15771861 http://stackoverflow.com/questions/575 ...