Apple 新推的Swift已经好几天了。对于向我这样的oc都还没完全琢磨透彻的菜鸟来说……(简直就是福利啊,joke)
看了几天的Swift,只是有了基本的印象。总感觉比较换混乱,可能源自与自己没怎么学过脚本语言。索性,边看边记,加深印象。
本来部分内容源自Apple的《The Swift Programming Language》以及互联网教程。其余内容均为个人理解,不保证正确。
进入正题:
1、Swift是什么?
Apple唤他作:雨燕。其实英语过了四级的都应该看出来,Swift还有一层含义:迅速、快。所谓The Swift Programming Language,其实直译应该是快速编程语言。而这,也应该就是Swift这门语言的精髓所在。
在《The Swift Programming Language》中,也可以看到对Swift的描述。大致如下:
Swift用来写iOS和OS X程序。
Swift吸取了C和Objective-C的优点,且更加强大易用。
Swift可以使用现有的Cocoa和Cocoa Touch框架。
Swift兼具编译语言的高性能(Performance)和脚本语言的交互性(Interactive)。
简言之:Swift是一门开发iOS和OS X的,(可能)比OC好用的编程语言。
2、Swift的基础语法
2.1 Swift的数据类型基基础用法
最直观的感受:不用写分号了,但是需要严格!小心!注意!仔细!空格的使用。而且真的和脚本语言很像。例如声明常量let,声明变量var,输出println()
eg:
var str:String = "swift" let num = 321 str = str + String(num) println("\\hello " + str);
输出:\hello swift
说明一下,声明不定类型的变量直接var,指定类型则var 变量名:变量类型 = "变量值"。let也一样,区别是let声明的是常量。拼接字符串的方法是"+",两个不同类型的不能直接加,必须显式类型转化。类型转化的方式是:类型(参数),字符串可以简写:\(参数)。
字符串还可以包含以下特殊字符:
转义特殊字符\0(空字符),\\(反斜线),使用\ t(水平制表符),\ n(换行符),\ r(回车),\“(双引号)和\'(单引号)
单字节Unicode标量,写成\ XNN,其中nn是两位十六进制数
两字节Unicode标量,写成\ unnnn,其中nnnn是四个十六进制数字
四字节Unicode标量,写成\Unnnnnnnn,其中nnnnnnnn是八进制数字
PS:变量还可以这样玩,你造吗?虽然笔主觉得酱紫很不好。
没错,中文,甚至Unicode编码的图片都可以作为变量。妈妈再也不用担心我不会取名字了,joke。
然后,再补充一个概念:可空与不可空。
String类型也分两种,String?和String!,?问号表示可空,!叹号表示非空。默认情况下是非空的。这个有助于在某些情况下处理可空变量。在后文分之结构if语句会继续说明。
eg:
话说,Swift的数据类型貌似只有三种(到目前为止,我是这么认为的,当然除开了基本数据类型而言),除了上文说到的String,还有Array和Dictionary。
Array和Dictionary的初始化空方法如下:
let emptyArray = String[]() let emptyDictionary = Dictionary<String, Float>()
甚至这样:
let emptyArray = [] let emptyDictionary = [:]
使用方法如下:
Array:
var numList = [1,0, 3, 4] numList[1] = 2
Dictionary:
var Person = [ "Name": "John", "Gender": "Unknown", ] Person["Gender"] = "Male"
比OC爽的一点是,大家发现没。数组可以直接使用数字,不用再NSNumber转化一次了。不过经测试,Array和Dictionary只能装载同一数据类型。这比较egg pain。
比如上面的例子。再加一个Age字段,也只能是String的。然后在使用的时候再转成整型。
2.2 Swift的控制流
分支主要包括if和switch,循环主要包括for-in、for、while和do-while。
eg:
let array = [1, 2, 3, 4, 5] for score in array { if score > 3 { println(">3") } else { println("else") } }
一般的使用方法和大多编程语言类似。只是省略了括号。
但是也有一些地方人很是理解,大家理解理解:
var optionalName: String? = "John Appleseed" var gretting = "Hello!" if let name = optionalName { gretting = "Hello, \(name)" }
先留个悬念,后面接着写……