Swift迅速入门笔记

用了两晚上的业余时间看了一下苹果的最新开发语言Swift,整理了一下笔记,分享一下。整体来讲确实很好入手的,XCode开发也很方便。
基本知识:

let a = “a”   //定义常亮

var b = “b”   //定义变量
var b:String = “Hello”; var e:Bool = true  //定义带类型的变量
var tus = (“Hello”, 23, 3.14, “aaa”)   //定义元组(Tuples)
println(tus.1)  //打印元组数据
typealias Vais = String //类型重命名
let d: Vais = “chen”
定义函数:
// 返回多个数据
func getName()->(Stirng, Int){
    return (“chen”, 123)
}
var tus2 = getName()
println(tus2.1)
//值类型,引用类型
//值类型:常量变量作为参数传参的时候,传的Copy  String
//引用类型:地址

比较运算:
if(1>2){ //与Java相同
    ……
}
三目运算:
let ageCount = (age<age2) ? age : age2
逻辑运算符: 与Java相同(略)
数组:
var myList = [“aaa”, “bbb”, “ccc”]
var myList:[Int] = [1, 2, 3]
myList[0] = “ddd” //更改数组内值
字典(Dictionaries) //等同于Java中HashMap
var myHash:Dictionary<String, String> = [“key1”:”value1”, “key2”:”value2”, “key3”:”value3”]
println(myHash[“key2”])
循环遍历:
for value in myList{
    println(value)
}
for var i = 0; i < 100; i++ {
   ……
}
条件语句:
if(k > j){
    …
}else {
    …
}
swich (k) {
    case 1…10:
        … // 默认会break
        fallthrough // 相当于没有break的作用继续往下执行
    case 20:
        …
    default:
        …
}
控制传递:
continue
break
fallthrough
定义函数:
// 单返回值
func sayHello(userName:String, age:Int)->String{
    return “Zhiguo.Chen”
}
// 无返回值
func printName(){
    println(“Zhiguo.Chen”)
}
// 多返回值
func getName()->(name:String, age:Int) {
    return (“Chen”, 24)
}
println(getName().name)
// name相当于参数的别名  如果参数前加# 相当于名称即别名
func sayHello(name: userName:String, age:Int)->String{
    return “Zhiguo.Chen”
}
sayHello(name: “Chen”, 12) // 调用方式
// 函数参数设定默认值 age 24 调用时可不用传此参数
func sayHello(name: userName:String, age:Int = 24)->String{
    return “Zhiguo.Chen”
}
// 多参数函数定义
func countPerson(users:String…) {
    for user in users {
        …
    }
}
// 传变量引用的函数
func changeName(inout name:String){
    name = “aaa”
}
var myName = “Chen”
changeName(&myName)
println(myName)
// 函数类型 类型函数
var getHello:(String, Int) -> String = sayHello
中间类型可省略如下:
var getHello = sayHello
// 函数嵌套 在函数里面定义函数 类似于Java内部类
// 闭包 sort(&myList, {$0 > $1})  {}内为匿名函数体
枚举类型:
enum Sex {
    case Male
    case Female
}
var sex = Sex.Male  //赋值
sex = .Female  //改值
enum Sex {
    case Male(Int, Int)
    case Female(String)
}
enum Country {
    case China = 1
    case Japan = 2
}
var myCountry = Country.China
switch myCountry {
    case .China:
        println(“China”)
    case .Japan:
        println(“Japan”)
}
面向对象:
class TV  {
     var keyCount = “12”
     var keyName:String = “Power”
     // 自定义构造函数
     init(name:String){
         self.name = name
     }
     func openTV()->String {
         return “Success”
     }
     // 析构函数 销毁时定义的
     deinit{
         name = “”
     }
}
var miTV = TV()
println(miTV.keyName)
var myTV = miTV
miTV === myTV  // 恒等式(===)比较是否指向同一引用对象 恒不等式(!==)
类的继承:
class MITV:TV {
    var name:String{
    get{
         return self.name
    }
    set{
        if(…){
            super.name = “Hello Sundy”
        }
    }
    }
    init(name:String) {
        super.init(name: name) //调用父类的构造方法
    }
    override func openTV() -> String{
         // 覆盖父类方法
    }
}
var myMiTV = MITV(name: “Sunday”)
@final 标注的属性,方法,类都不可能被重写或者继承
结构体:
struct TV{
    var keyName = “aaa”
    var keyValue = 24
    func getKeyNumber()->Int {
        return keyName;
    }
}
var myTV = TV(keyName: “bbb”, keyValue: 99)
协议(Protocal): 类似于Java接口
protocol Action{
    var name:String {
         get set
    }
    func getName()->String
}
class InvokeAction:Action {
}
// 协议类型
var abcProtocol:Action = InvokeAction()
泛型:
func swapValue<T>(inout a:T, inout b:T){
    ……
}