1. LLVM框架系统:

1) 是一套构架编译器的框架系统,提供编译、连接、运行期间的优化处理,直接生成本地汇编代码,支持各种语言(包括GCC和所有苹果的开发语言);

2) 它是一种底层支持软件,可以算得上是系统软件,Swift编译时底层需要通过LLVM来生成本地代码;

2. Swift语言的一些基本特性:

1) 博采众长,吸取了Python、Ruby、OC等各种语言的优点,可以算得上是一门综合性的语言;

2) 和C++一样是面向对象的编译型语言,由于是编译生成本地代码再执行的,因此速度很快,效率很高,比OC的效率高很多;

3) 简单灵活,扩展性能好,语法特别简洁,同时支持在类体外为类添加成员或函数;

4) 和OC享有同样的Cocoa类库;

5) 强类型:由于支持面向对象所以是类型安全的,可在编译时检查类型异常;

6) 具有动态特性,比如定义变量的时候可以不用声明类型,可以直接通过赋值的内容判断变量类型,但是一旦初始化后类型就确定了不可再修改;

7) 支持一些高级特性,比如函数闭包、泛型、多值返回(利用元组来实现)等;

8) 支持和OC混编(但是代码必须得分文件编写,即不是强耦合的);

9) 全面支持Unicode,标示符可以是中文、表情符号等;

10) ;称为可选符号,一般在同一行中存在多条语句时作为分隔符出现,换行即表示一条语句的结束

11) 将繁杂众多的集合数据类包装在两个类型中,Array具有List等所有线性边的功能,Dictionary包含Map等功能,使用更简便和容易;

12) 利用可选变量来解决大规模进行异常处理的问题:Optional可选变量主要应对一个变量可能存在也可能为nil空的情形,通常在很多函数执行的时候可能会发生异常,一般情况下是通过抛出异常给上级函数来处理的方式来解决异常,但是这回大大增加代码的效率和冗余度,但是如果可以通过返回nil值来判断异常就会大大提高问题解决的效率;

传统情况下通过返回值判断异常有很多缺陷,比如有些函数返回-1表示异常,有些函数返回0表示异常,而有些函数返回最高位为1表示异常,特别繁多又不方便记忆,但是如果规定成功返回一个有值的量而异常则返回空(即没有值nil),这样就可以统一异常的鉴别方式了;

Swift的nil和OC的nil不一样,OC的nil是一个空指针NULL,但是Swift中所有类型的可选值都可以是nil,可选的意思就是要么有值要么没值;

13) 正因为有可选类型的存在Swift没有异常处理机制,这大大降低了语言的复杂度;

3. Playground简介:

1) 是苹果在Xcode6中添加的新功能,可以实时显示新输入代码的运行结果,因此Playground和Eclipse一样具有代码解释的功能,因此运行速率会比较慢和迟钝;

2) 主要用来学习,但是也可以帮助提高开发效率,因为所见即所得所以能及时改正程序中的bug;

3) Playground分三个区域,从左到右分别为代码编辑区、观察区、时间轴效果区,观察区可以观察左边对应行中变量的实时值,时间轴效果区可以按照底部时间进度条对应的时间位置通过文本、图形和曲线图等方式将运行结果显示给开发人员,并且时间轴上的时间可以任意调;

4) 建立Playground的方法,先建立工程,工程包里会包含可执行程序,然后跟New一个文件一样New一个Playground,Target即目标选择该工程的可执行文件,解释程序都是基于可执行程序并以源代码作为符号文件进行跟踪解释的;

4. 标示符命名规则:

1) 规则完全和C语言一样,只不过里面的字母不再是英文字母那么简单,由于Swift完全支持Unicode,所以里面的字母可以是任意一个国家的语言字母,可以是中文,也可以π等希腊文,也可以是Unicode编码的笑脸符号等:

let π = 3.1415926
let 哈哈 = "牛叉"

2) 关键字是不能作为标示符使用的,但是如果一定要使用关键字作为标识符的话就必须用``括起来,事实上``并不属于标识符的一部分,它只起一种转义的作用,提醒编译器不要将``内的字符串解释为关键字而要解释成普通的标示符,当然``内部的字符串还是要遵守标识符的命名规则的,当然``也可以用于其他标示符(不一定得是关键字),但是`π`和π就是两个相同的标识符了!

3) 关键字:Swift的关键字一般都用小写字母的,含有大写字母的关键字两边都有两个连续的下划线,比如__FUNCTION__等,goto是Swift的关键字,但then不是;

5. 注释:

1) 和C++注释一样,支持//和/* */两种;

2) /* */的功能在Swift中更加强大,支持嵌套注释,比如/* xxx /* yyy */ zzz */,以前只能匹配到最后一个y后面的*/,但是现在/* */已经能和括号一样进行匹配了;

6. 初始化以及类型绑定:

1) 动态类型绑定:像Java、C++等都属于静态语言,采用静态类型绑定,即在定义变量时直接指定其类型,数据类型在编译阶段就已经确定,而动态类型绑定是在程序运行时才确定数据的类型,比如在程序运行到为这个变量第一次初始化语句时才确定数据类型;

2) Swift同时具备静态绑定和动态绑定两种特性,在两者之间寻求平衡点;

3) Swift类型绑定综述:

i) 静态绑定:var a: Int = 5,定义时直接指定其类型,则在编译阶段就可确定类型

ii) 动态推导静态绑定:var a = 5,虽然没有直接指定其类型,但是可以通过右边表达式的类型推断出左边的类型,这也是在编译阶段就可确定类型的情况

iii) 动态绑定:var a = b > c ? "string" : 3.23,如果b和c是用户输入的两个整型数值,则编译阶段完全无法判断a最终的类型,这种无法推断的情况就只能在程序运行的时候根据具体情况进行绑定了

4) Swift在定义变量或常量的时候必须获取类型信息:原因很简单,Swift是强类型语言,但是var、let又和Java的Object不一样,Object是通过多态实现的(底层是void类型),其本身并不反映任何类型,而var和let在定义变量或常量时类型是确定的(通过3)中的方法确定),因此Swift有且仅有以下几种定义以及初始化的方式:

i) var a = 20; // 正确,通过动态推导静态绑定的方式在定义的时候确定了类型

ii) var a: Int = 20; // 正确,通过静态绑定的方式在定义的时候确定了类型

iii) var a: Int; // 正确,虽然没有初始化,但是在定义的时候确定了类型(记住!只要能在定义的时候确定类型就OK了,如果办不到这点就肯定是错误的!)

iv) var a; // 错误,定义的时候没能确定类型(记住!打从一个变量或常量在代码中第一次出现的时候就必须知道它的类型!)

5) 同时多个变量或常量的定义:

var a = "abc", b:Float = 20.3, c:Bool
let u = "xyz", v:Double = 3.23

7. 变量和常量:

1) 用var定义的都是变量,用let定义的都是常量,变量在初始化后值可以改变,但是常量在定义时必须初始化,初始化后不得修改其值:

var a = 3
a = 5 // OKlet b: Int // Bad! 常量在定义的时候必须初始化
let b: Int = 5 // OK
let b = 5 // OK
b = 10 // Bad! 常量初始化后不能修改

2) 数据类型一旦在定义时确定后就不能再改成其它类型,即已经绑定死了:

var a = "haha"
a = 15 // Bad!数据类型错误!

8. 标识符的命名规范:

1) 常量名全大写,多个单词中间用下划线隔开,比如let YEAR = 60; let WEEK_OF_MONTH = 3;等;

2) 变量名:首字母消息,其余单词首字母大写,比如var curLoginAttempt = 0等;

3) 类、协议、结构体、枚举等命名:首字母大写,其余单词首字母也大写,比如class StudentClass等;

4) 函数和方法:首字母小写,第一个单词为动词,其余单词首字母大写,比如isEmpty等;

9. print和println的实用简介:

1) 这两个函数时全局函数,在任何地方都可以使用,用于在终端输出信息;

2) 前者无换行,后者自动换行,换行需要\r\n同时使用!print("haha\r\n");

10. 使将变量和常量的值插入字符串:

1) 由于Swift并没有为+定义重载,因此不能这样输出:println("Number is " + var_num),会报错的!这里和Java和C++大不相同;

2) 这里可以使用全局函数toString将变量或常量的值转换成字符串后再利用字符串的+运算符进行连接:println("Number is " + toString(var_num))就对了;

3) 使用转义符号\(var/let)直接在字符串中嵌入常量或变量的值的字符串,作用类似与Shell的$,比如println("Number is \(var_num)"),编译器将\()里的字符串解释成变量或常量取值后转化成字符串的操作;

[Swift]语言介绍相关推荐

  1. iOS开发Swift语言学习教程-欧阳坚-专题视频课程

    iOS开发Swift语言学习教程-16345人已学习 课程介绍         Swift这套视频是针对有Objective-C/iOS基础,想转成Swift开发的学习视频,视频中从Swift语法,结 ...

  2. swift语言特性,swift语法介绍,swift使用技巧

    Swift语言特性.Swift语法介绍.Swift使用技巧 Swift是一种由苹果公司开发的编程语言,于2014年首次发布.它是一种现代.快速.安全的编程语言,用于iOS.macOS.watchOS和 ...

  3. Swift(一)语言介绍

    Swift是苹果2014年推出的全新的编程语言,它继承了C语言.ObjC的特性,且克服了C语言的兼容性问题. Swift发展过程中不仅保留了ObjC很多语法特性,它也借鉴了多种现代化语言的特点,在其中 ...

  4. swift语言注册非免费苹果账号iOS游戏框架Sprite Kit基础教程

    swift语言注册非免费苹果账号iOS游戏框架Sprite Kit基础教程 1.2.3  注册非免费苹果账号swift语言注册非免费苹果账号iOS游戏框架Sprite Kit基础教程 免费的苹果账号在 ...

  5. Swift教程Swift语言快速入门(内部资料)

    Swift语言快速入门(内部资料) 试读下载地址:http://pan.baidu.com/s/1eQCGRHw 前言Swift教程Swift语言快速入门(内部资料)Swift教程Swift语言快速入 ...

  6. Linux平台swift语言开发学习环境搭建

    摘要  介绍在Ubuntu平台搭建Swift开发环境: 介绍Swift脚本解析器swift的使用: 介绍Swift编译器swiftc的使用: 1.序言 这两天一直忙,没来得及记录东西,周三12月4日凌 ...

  7. Swift语言快速入门

    Swift语言快速入门(首部同步新版官方API文档和语法的Swift图书,确保代码可编译,作者专家在线答疑,图书勘误实时跟进) 极客学院 编著   ISBN 978-7-121-24328-8 201 ...

  8. Swift翻译之-Swift语法入门 Swift语法介绍

    目录[-] Hello world - Swift 简单赋值 控制流 函数与闭包 对象和类 枚举与结构 协议和扩展 泛型 2014.6.3日,苹果公布最新编程语言Swift,Swift是一种新的编程语 ...

  9. Swift语言高速入门

    Swift语言高速入门(首部同步新版官方API文档和语法的Swift图书,确保代码可编译,作者专家在线答疑,图书勘误实时跟进) 极客学院 编著   ISBN 978-7-121-24328-8 201 ...

最新文章

  1. 每天一个linux命令(18):locate 命令
  2. python excel 自动化-Python 自动化:处理 Excel(笔记)
  3. 【若依(ruoyi)】数据选择对话框
  4. CMOS图像传感器——相位对焦
  5. Activiti5第七弹,自己实现一个ProcessEngineConfiguration同时自定义拦截器
  6. 宁波大学2020计算机技术复试线,宁波大学2020年硕士研究生复试分数线
  7. 【游戏】基于matlab GUI时钟设计【含Matlab源码 1102期】
  8. UE4官方文档UI学习:3.UMG 创建暂停菜单
  9. 疫情期间,世界顶尖艺术学院-伦敦艺术大学开启教学新模式
  10. python下载itchat失败_Python itchat库的使用,pythonitchat,方法,小记
  11. 信息系统项目管理师(2022年)—— 重点内容:项目变更管理(16)
  12. 自动抢票之 12306 抢票篇
  13. 阿里AI Labs王刚解读9小时卖出百万台的“天猫精灵” | 高山大学(GASA)
  14. 证明:模n加法满足结合律
  15. 梆梆加固的Android P版本预兼容之路
  16. HTML+CSS+JS大作业:网站设计——家具装修公司(12页 bootstrap, 响应式)
  17. Licheepi_nano开发板:根文件系统编译
  18. (C语言)啥?4除以2等于0?
  19. android使用连连支付进行银行卡支付
  20. 系统u盘怎么改回普通_u盘启动盘恢复成普通u盘u盘操作系统_详细教您怎么把系统装进U盘...

热门文章

  1. 算法岗面经总结(快看漫画)
  2. 计算机使用技巧大全 书,总算明白电脑使用技巧大全
  3. 演讲培训——荣耀时刻
  4. select函数的分析
  5. 在使用ambari进行安装部署过程中遇到的glibc问题
  6. 小米5x android auto,小米 5s Plus重生——伪装Pixel XL
  7. 处女座与小姐姐(三)
  8. 量化人才之战如何取胜
  9. IDEA最全最常用的配置与性能优化(Java必备)
  10. 怎样完成MES系统实施?