Swift介绍
Swift介绍
Swift发布于2014年wwdc大会,是苹果推出的一门编程语言,刚推出的时候主要在os X和iOS平台,今年wwdc大会上,苹果公司宣布今年年底Swift将会开源,开源的部分包括编译器和源代码,这对与开发者来说,是振奋人心的,同时也说明了苹果推懂这门编程语言的决心.
为什么要学习这门语言?我认为有以下几个原因
- OC虽然很稳定,但是缺少很多适合现代编程语言的特点.而Swift的一个优点就是modern
- Swift更加高效
- Swift更加interactive
- Swift是typesafe的
初探
打印函数
println("Hello World") // 在Swift2.0中废除
print() // 这个输出函数一直存在,替代了上一个函数,自动换行
注释
注释可以多层嵌套,并且在Swift2.0中,支持markup语法注释
// 单行注释
/* 外层多行注释
/*
内层多行注释
*/
*/
语句之后不用分号
在Swift中,吸收了很多其他语言的优点,它在书写上跟加简洁,去掉了;
同一行写多条语句,还需要加上,
或者;
区别
let number1 = 1, number2 = 2
let switf = "I'm a coder"; print(swift)
类型推断
Swift是类型安全的语言,使用前必须声明数据类型,但是Swift有类型推断机制,不用每次都写上类型
let intValue = 10 // value 系统会自动推断为Int类型
let doubleValue = 5 + 1.44 // Double
数值类型转换
let value: UInt = 1
let value2: UInt16 = 10
let value3 = 1 + UInt(value2) //类型不匹配, 需要类型转化
print(value3)
类型别名
typealias
相当于C语言中的typedef
typealias myString = String
let testString: myString = "Hello World"
数据类型
常量和变量
常量
常量:不可以修改,用let
关键字修饰
变量
变量:可以修改,用var
关键字修饰
let loginCount = 5
var currrentLoginCount = 0
println("longinCount:\(loginCout)\ncurrentLoginCount:\(currentLoginCount)")
// 在同一行定义一个或多个变量
var x = 5, y = 6, z = 7
let 😀 = 1 // 常量和变量的命名是Unicode字符都可以
声明一个String类型的变量,变量名为nameString
var nameString: String = "Hello World"
let count: Int = 10
数据类型
Bool类型
Swift中的Bool类型只有true
和false
let areYouOK = true // 推断为Bool类型
if areYouOK {
println("哈哈")
}
元组 tuples
只取元组中目标元素,其他元素可用_
标记忽略
let httpCode = (404, "not found")
// 元组数据的访问方式
let (msgCode, message) = httpCode
println("this is status code \(msgCode)")
println("this is status message \(message)")
// 通过下标访问
println("this is status code \(httpCode.0)")
println("this is status message \(httpCode.1)")
// 只取元组中目标元素,其他元素可用_标记忽略
let (justNeedStatusCode, _) = httpCode
println("this is status code \(justNeedStatusCode)")
// 可以在定义元组的时候给单个元素命名
let http200Status = (status: 200, message: "ok")
println("this is status code\(http200Status.status), messge is \(http200Status.message)")
可选类型
let possableNumber = "123"
let converNumber = possableNumber.toInt()
// converNumber被推断为"Int?", 或者Optional Int
if let number = possableNumber.toInt() {
println("\(possableNumber) has an integer value of \(number)")
} else {
println("\(possableNumber) cound't convered integer")
}
断言
// 断言, 条件为true, 执行语句
let age = -3
assert(age >= 0, "a person's age cound not less than zero")
// 何时使用断言, 调试时候用,可引起程序崩溃