概述

Swift是苹果2014年推出的全新的编程语言,它继承了C语言、ObjC的特性,且克服了C语言的兼容性问题。Swift发展过程中不仅保留了ObjC很多语法特性,它也借鉴了多种现代化语言的特点,在其中你可以看到C#、Java、Javascript、Python等多种语言的影子。同时在2015年的WWDC上苹果还宣布Swift的新版本Swift2.0,并宣布稍后Swift即将开源,除了支持iOS、OS X之外还将支持linux。

本文将继续iOS开发系列教程,假设读者已经有了其他语言基础(强烈建议初学者从本系列第一章开始阅读,如果您希望从Swift学起,那么推荐你首先阅读苹果官方电子书《the swift programming language》),不会从零基础一点点剖析这门语言的语法,旨在帮助大家快速从ObjC快速过度到Swift开发中。即便如此,要尽可能全面的介绍Swift的语法特点也不是一件容易的事情,因此本文将采用较长的篇幅进行介绍。

  1. 基础部分
    1. 第一个Swift程序
    2. 数据类型
      1. 基础类型
      2. 集合类型
      3. 元组
      4. 可选类型
    3. 运算符
    4. 控制流
  2. 函数和闭包
    1. 函数
    2. 闭包
    1. 属性
    2. 方法
    3. 下标脚本
    4. 继承
  3. 协议
  4. 扩展
  5. 枚举和结构体
    1. 结构体
    2. 枚举
  6. 泛型

基础部分

第一个Swift程序

创建一个命令行程序如下:

import Foundation

/**
* Swift没有main函数,默认从top level code的上方开始自上而下执行(因此不能有多个top level代码)
*/
println("Hello, World!")

从上面的代码可以看出:

  1. Swift没有main函数,从top level code的上方开始往下执行(就是第一个非声明语句开始执行[表达式或者控制结构,类、结构体、枚举和方法等属于声明语句]),不能存在多个top level code文件(否则编译器无法确定执行入口,事实上swift隐含一个main函数,这个main函数会设置并调用全局 “C_ARGC C_ARGV”并调用由top level code构成的top_level_code()函数);
  2. Swift通过import引入其他类库(和Java比较像);
  3. Swift语句不需要双引号结尾(尽管加上也不报错),除非一行包含多条语句(和Python有点类似);

数据类型

Swift包含了C和ObjC语言中的所有基础类型,Int整形,Float和Double浮点型,Bool布尔型,Character字符型,String字符串类型;当然还包括enum枚举、struct结构体构造类型;Array数组、Set集合、Dictionary字典集合类型;不仅如此还增加了高阶数据类型元组(Tuple),可选类型(Optinal)。

基础类型

Xcode 从6.0开始加入了Playground代码测试,可以实时查看代码执行结果,下面使用Playground简单演示一下Swift的基础内容,对Swift有个简单的认识:

import Foundation

var a:Int=1 //通过var定义一个变量

//下面变量b虽然没有声明类型,但是会自动进行类型推断,这里b推断为Int类型
var b=2 var c:UInt=3
let d=a+b //通过let定义一个变量 //下面通过"\()"实现了字符串和变量相加(字符串插值),等价于println("d="+String(d))
println("d=\(d)") //结果:d=3 //注意由于Swift是强类型语言,a是Int类型而c是UInt类型,二者不能运算,下面的语句报错;但是注意如果是类似于:let a=1+2.0是不会报错的,因为两个都是字面量,Swift会首先计算出结果再推断a的类型
//let e=a+c //Int.max是Int类型的最大值,类似还有Int.min、Int32.max、Int32.min等
let e=Int.max //结果:9223372036854775807 var f:Float=1.0
var g=2.0 //浮点型自动推断为Double类型 var h:String="hello " //emoj表情也可以作为变量或者常量,事实上所有Unicode字符都是可以的
var

最新文章

  1. 使用Ruby来实现批量更新AD中字段
  2. u盘写入Ubuntu后容量变小,恢复方式
  3. MySQL主从复制中断,报“Error on master: message (format)='Cannot delete or update a parent row: a foreign key constraint fails' error code=1217” 错误
  4. ionic ios发布图标启动也不能正确加载问题
  5. MicroERP数据初始化SQL脚本
  6. Intent之前的对象传递与fragment传递数据
  7. 自学python3随笔--连接数据库和写EXCEL文件实现
  8. 算法与数据结构(2)--英雄会第三届在线编程大赛:几个bing
  9. PHP获取远程图片并调整图像大小(转)
  10. web标准(复习)--8
  11. 中国 省会 地级市 经纬度 city array
  12. java之拦截器Interceptor
  13. leftBarButtonItem 的颜色
  14. 从 注解和继承 到 JAXB中的注意事项
  15. c/c++ 标准容器 forward_list resize 操作
  16. spring boot ${}占位符不起作用
  17. 大快DKH大数据智能分析平台监控参数说明
  18. ubuntu16.04+七彩虹GTX1060的NVIDIA驱动+Cuda8.0+cudnn5.1+tensorflow+keras搭建深度学习环境【学习笔记】【原创】
  19. DNS rebinging攻击方式
  20. day03.2-内置函数的使用

热门文章

  1. Tomcat一个BUG造成CLOSE_WAIT
  2. 《Django By Example》第四章 中文 翻译 (个人学习,渣翻)
  3. 【原】nodejs全局安装和本地安装的区别
  4. json与JavaScript对象互换
  5. Android线程管理之ThreadLocal理解及应用场景
  6. [C#] C# 知识回顾 - 学会使用异常
  7. spring applicationContext.xml和hibernate.cfg.xml设置
  8. HTML5笔记2——HTML5音/视频标签详解
  9. Dynamics CRM 2015-Data Encryption激活报错
  10. iOS - 模态Model视图跳转和Push视图跳转的混合需求实现原理