近期開始学习swift。把学习的过程和总结整理成一个系列。方便日后回想总结。

基本的语法

基础语法

swift中每一行结束后不须要加分号。多个语句在同一行内须要用分好隔开

//表示凝视。或者用/* ……*/

常量

常量是指定义之后无法改动值的量,比方设置一个最大尝试登陆的次数,它的值一旦被确定,就不应该在程序中被改动。swift中的常量用let表示。定义方法例如以下:

let maxAttemptTime = 3 //正确
maxAttemptTime = 4 //错误。常量一旦定义不能够改变
let maxAttemptTime //错误

另外要注意的是,常量在定义的时候必须要赋初值,当然也能够不这么做,后面会具体介绍。

变量

和常量类不同的是。变量用var表示,能够任意改变值

var currentAttemptTime = 1 //正确
currentAttemptTime = currentAttemptTime + 1 //正确

打印常量和变量

OC中的NSLog方法依旧可用,也能够用swift的println()方法。

NSLog("hello world")
println("hello world")
//以上两句等价,输出结果都是"hello world" //也能够打印变量或者常量
var name = "kt"
NSLog("name = \(name)")
println("name = \(name)")
//以上两句等价,输出结果都是"name = kt"

swift也支持print方法,与println不同的是。println在结尾会自己主动加上换行符,这与java的语法是一致的。

类型

类型推导

习惯了oc、c++或者java的程序员会认为没有变量的类型非常奇怪,事实上swift和php与js相似,都是支持类型推导功能的。

所谓的类型推导,就是说swift会依据变量的实际值,自己主动推导出变量所属的类型。

swift中的基础类型有Int、Double、String、UInt8、Character、Bool等。

就不一一解释了。Swift中全部的类型都是首字母大写的。

var name = "kt" //自己主动推导为String类型
var age = 20 //自己主动推导为Int类型
var pi = 3.1415926 //自己主动推导为Double类型

宽类型优先

既然swift支持类型推导。那么π的近似值3.1415926。会被推导为什么类型呢?是Float还是Double? 答案是Double,由于swift具有宽类型优先的特性,也就是为自己主动推导为取值范围更宽泛的类型。

类型标注

最開始提到必须要给常量或者变量赋初值,假设不想赋初值,或者不习惯自己主动类型推导。我们还能够显示的给常量或者变量标注类型,这被称为“类型标注”

var name: String //在变量名后加上冒号和类型名来进行类型标注
//经过类型标注后。能够不赋初值 var name: String = "kt" //人为标注为String类型
var age: Int = 20 //人为标注为Int类型 //这样的情况下的类型标注有些多此一举

类型安全

swift支持类型推导,这个功能非常方便,与此同一时候,swift也是严谨的。由于它是类型安全的。

所谓的类型安全是指。不支持常量、变量之间的隐式类型类型转换。

var a = 1
var b = 1.5
var c = a + b //报错

也就是说。不同类型的变量(常量)不能够出如今”+、-、*、/等运算符两側”。

所谓的常量、变量之间,事实上是指字面量之间的隐式类型转换是能够的。

比方例如以下代码:

var pi = 3 + 0.1415926 //这个必须能够啊,否则就乱套了。

类型转换

假设我希望把整数型和浮点型变量相加怎么办呢,能够使用强制类型转换,又称显式类型转换。

var a = 1
var b = 1.5
var c = a + b //报错
var c = Double(a) + b //正确,得到值为2.5的Double型变量c
var c = a + Int(b) //也正确。得到值为2的Int型变量c

须要说明三点:

  1. 精度由高向低或者由低向高都能够。只是高精度转向低精度会丢失小数点后的数据。

  2. 上述代码不能够改为“var c = Float(a) + b”,理由是类型安全 + 宽类型优先。

  3. 注意和C语言的语法差别,C语言中的写法为(int)a,swift中的括号应加在变量上。

类型别名

通过typelias关键字能够又一次命名类型,相似于C语言中的typedef,只是更简单。

typealias Name = String //如今Name类型和String类型是全然一样的了。
var myName: Name = "kt"

附录

查看完整专栏——《Swift轻松入门》

【Swift入门(一)——基本的语法】

【Swift入门(二)——字符与字符串】

【Swift入门(三)——元组(Tuple)】

【Swift入门(四)——可选类型(Optionals)与断言(Assert)】

【Swift入门(五)——数组(Array)】

【Swift入门(六)——字典(Dictionary)】

【Swift入门(七)——结构体(Struct)】

【Swift入门(八)——功能强大的求余运算符】

【Swift入门(九)——String与Int、Double、Float等数字相互转换】

【Swift入门(十)——循环引用、弱引用和无主引用】

【Swift入门(十一)——类型转换与is、as操作】

【Swift入门(十二)——利用Extension加入逆序输出字符串方法】

Swift入门(一)——基本的语法的更多相关文章

  1. Swift入门教程:基本语法大全

    原文:Swift入门教程:基本语法大全       简介:                                                                        ...

  2. Swift入门篇-字符串和字符

    今天主要是介绍一下字符串的用法 ,字符串的语法和object-c语法不太一样,但是思想是一样,就是写法不太一样.如果您对.net和java语法比较熟悉的话,那您几乎没有深压力.如果您对swift 基本 ...

  3. Swift入门篇-Hello World

    提示:如果您使用手机和平板电脑看到这篇文章,您请在WIFI的环境下阅读,里面有很多图片, 会浪费很多流量. 博主语文一直都不好(如有什么错别字,请您在下评论)望您谅解,没有上过什么学的 最近这2天主要 ...

  4. Swift入门(五)——数组(Array)

    集合 集合的定义 Swift中提供了两种数据结构用于存放数据的集合,各自是数组(Array)和字典(Dictionary). 他们的主要差别在于数组中的元素由下标确定.而字典中的数据的值由数据的键(K ...

  5. 快看Sample代码,速学Swift语言(1)-语法速览

    Swift是苹果推出的一个比较新的语言,它除了借鉴语言如C#.Java等内容外,好像还采用了很多JavaScript脚本里面的一些脚本语法,用起来感觉非常棒,作为一个使用C#多年的技术控,对这种比较超 ...

  6. Swift入门(十)——循环引用、弱引用和无主引用

    近期看到swift里面不仅有循环引用和弱引用(weak),还加入了无主引用(unowned),于是写了一些demo,这里总结一下. 和OC一样.Swfit默认也是基于ARC进行内存管理的,因此尽管简单 ...

  7. Swift入门(四)——可选类型(Optionals)与断言(Assert)

    可选类型是什么? 首先看一个问题,Swift中String类型的变量有一个叫做toInt的方法,能够把String类型变量转换为Int类型变量. var stringValue = "5&q ...

  8. Swift入门

    Swift 入门 简介 Swift 语言由苹果公司在 2014 年推出,用来撰写 OS X 和 iOS 应用程序 2014 年,在 Apple WWDC 发布 历史 2010 年 7 月,苹果开发者工 ...

  9. Swift入门学习之一常量,变量和声明

    版权声明:本文为博主原创文章,未经博主允许不得转载. 转载请表明出处:http://www.cnblogs.com/cavalier-/p/6059421.html Swift入门学习之一常量,变量和 ...

随机推荐

  1. 存储 磁盘大于2TB 大数据存储一个盘 解决方法

    1.vmware虚拟机环境下可以做裸映射 但是一个存储 只能对应一个虚拟主机裸映射 我已经在一个10TB的存储上做好多个主机,就不适用了 2.在虚拟机上添加5个2TB磁盘,磁盘管理中新建 带区卷 可以 ...

  2. WordPress多本小说主题–WNovel主题发布,十分钟搭建小说站! 现已更新至1.2版本

    本文属于<WNovel主题操作手册>文章系列,该系列共包括以下 8 部分: WNovel主题使用手册之–主题安装及更新教程 WNovel主题使用手册之–小说管理 WNovel主题使用手册之 ...

  3. 基于MPLAB X IDE配置位设置讲解

    http://blog.csdn.net/superanters/article/details/8541171 在讲基于MPLAB X IDE 配置位配置前我先讲讲如何配置配置位. 比如PICLF1 ...

  4. 【SPOJ220】Relevant Phrases of Annihilation (SA)

    成功完成3连T!   嗯没错,三道TLE简直爽到不行,于是滚去看是不是模版出问题了..拿了3份其他P党的模版扔上去,嗯继续TLE...蒟蒻表示无能为力了... 思路像论文里面说的,依旧二分长度然后分组 ...

  5. HDU 4746 HDOJ Mophues 2013杭州网赛I题

    比赛的时候就预感到这题能出,但是会耗时比较多.结果最后是出了,但是有更简单的题没出. 是不是错误的决策呢?谁知道呢 题目意思: 定义f(x) = x分解质因数出来的因子个数 如 x = p0 * p0 ...

  6. Tomcat学习笔记(八)

    Tomcat载入器(二) Tomcat拥有不同的自定义类加载器,以实现对各种资源库的控制. 1.同一个web服务器里,各个web项目之间各自使用的java类库要互相隔离.  2.同一个web服务器里, ...

  7. Java代码实现真分页

    在JavaWeb项目中,分页是一个非常常见且重要的一个小方面.本次作为记载和学习,记录项目中出现的分页并做好学习记录.在这里,用的是SSH框架.框架可以理解如下图: 在JSP页面,描写的代码如下: & ...

  8. python使用openpyxl操作excel

    def initExcel(): file_path = "test.xlsx" file = load_workbook(file_path) table = file[&quo ...

  9. OpenCV3.1.0+VS2015开发环境配置

    摘要: 由于最近AR(增强现实)这个概念非常火爆,各种基于AR的应用及游戏逐渐面向大众,而在AR中最重要的两个技术就是跟踪识别和增强渲染,其中跟踪识别是通过OpenCV这个开源的计算机视觉库来实现的, ...

  10. python面试经典315

    期待的是可以检验自己学习的成功:苦逼的是怎么又有东西没记住,但我们依然每天坚持一遍.一遍又一遍指导记住为止. 第一部分 Python基础篇(80题) 为什么学习Python? 通过什么途径学习的Pyt ...