02-swift基础语法

作者: liangdahong | 来源:发表于2016-09-01 01:22 被阅读11次

最近看了看swift的知识,仅是记录学习过程,如果你是swift小白,可能有一些用呢!😁
下面是swift最基本最简单的一些语法(由于swift目前时时变化,使用语法可能有一定的出入@微博 github完整源码

1.func 函数

<pre>
// FUNC 1
func swiftFunc() -> () {
}

// 没有参数 没有返回值
func fun1() -> Void{
}

// 有参数 没有返回
func fun2WithA(a a:Int, b: Int, c: Bool) {
}

// 没有参数 有返回
func fun4WithA() -> (Double){
return 0.0;
}

// 有参数 有返回
func fun3(a a:Int, b: Int, c: Bool) -> (Double){
return 1.0;
}

func fun5() -> (a: Int, b: Int) {
return (1,2)
}

func fun6(a:(c: Int, d: Int)) -> (a: Int, b: Int) {
return (1,2)
}

func fun6(f:() -> ()) -> Void {
f();
}

// 使用的注意点
func sub(num1 num1: Int, num2: Int) -> (Int) {
return num1 + num2;
sub(num1: 0, num2: 0)
}

// 一句代码搞定2 个方法
func makeCof(name name: String) -> Void {
return;
makeCof(name: "")
}

func makeCoff(name name: String = "def") -> Void {
return;
makeCoff()
makeCoff(name: "")
}

func makeCOff1(name name: String = "", age: Int, id: Int = 0) -> () {
return;
makeCOff1(age: 1);
makeCOff1(name: "1", age: 10);
makeCOff1(name: "1", age: 0, id: 1);
makeCOff1( age: 1, id: 1);
}

func subs(nums nums: Int...) -> (Int) {
var n = 0
for num in nums {
n+=num
}
return n
subs(nums: 1,2)
}

// 指针类型
func swap( inout num1 num1: Int, inout num2: Int) -> () {
return
}

func fun8() -> () {
func test() -> (){}
test();
}
</pre>

2.类 class

<pre>
class BMPerson {

}

class Person: NSObject {
var name = String?()

// 类的属性处理
// 1 存储属性
// 2 计算属性
// 3 类属性

// 1.
var age: Int = 0
var name1: String?
var name2: String!

// 2.计算属性 j=简单使用
var ave: Int {
    return 1
}

// 3.类属性
static var cours: Int = 0;

// 系统自动调super
override init() {
    age = 1;
}

// 系统自动调super
init(age: Int, name: String) {
    self.age = age
    self.name = name
}

init(dict: Dictionary<String, AnyObject>) {
    
    // SWIFT 一般的init 方法不需要调 super.init (因为系统会自动调用)
    // 但有一些特殊情况需要自己调用
    super.init()
    self.setValuesForKeysWithDictionary(dict)
}

// 和oc的kvc设值也可以防止崩溃
override func setValue(value: AnyObject?, forUndefinedKey key: String) {}

}

func personFunc() -> () {
let p = Person();
p.setValue("", forKey: "")
p.setValue("", forKeyPath: "name.aa")
p.setValuesForKeysWithDictionary(["name": "1","name1": "1"])
Person.cours = 0;
}

class BMPerson1: NSObject {

var name: String? {

    // 将要改变时
    willSet{
        print(newValue)
    }
    
    // 已经改变时
    didSet{
        print(oldValue)
    }
}

}
</pre>

3.闭包

<pre>
class BMPerson2: NSObject {

var name = ""

func getData(block: ((data: String) -> ())? ) -> () {
    self.name = "a"
    block?(data: "");
}

// 麻烦
func test1() {
    weak var wself = self;
    self.getData {(data) in
        wself?.name = "1";
    }
}

// 不安全
func test2() {
    self.getData { [unowned self](data) in
        self.name = "1";
    }
}

// 推荐
func test3() {
    self.getData { [weak self](data) in
        self?.name = "1";
    }
}
// func 尾部的参数是一个闭包时可以简化写

}

func test11() -> () {
let p = BMPerson2()
p.getData { (data) in
}
}
</pre>

相关文章

  • 02-swift基础语法

    最近看了看swift的知识,仅是记录学习过程,如果你是swift小白,可能有一些用呢!?下面是swift最基本最简...

  • 【Android】知识点汇总,坚持原创ing

    Android基础 Java基础 Java基础——Java内存模型和垃圾回收机制 语法基础 语法基础——C语法基础...

  • java

    语法基础1.1 java初体验(语法基础)1.2 变量和常量(语法基础)1.2 变量和常量(语法基础)1.4 流程...

  • 02-swift基础数据类型

    声明常量和变量 使用关键字 let 来声明常量 使用关键字 var 来声明变量 可以在一行中声明多个变量或常量,用...

  • 软帝学院:80道java基础部分面试题(四)

    Java基础部分 基础部分的顺序:基本语法,类相关的语法,内部类的语法,继承相关的语法,异常的语法,线程的语法,集...

  • 快速上⼿ Kotlin

    快速上⼿ Kotlin 基础语法 函数基础语法 与 Java 代码互调 Java 与 Kotlin 交互的语法变化...

  • Java面试题知识点

    1. Java基础部分 基础部分的顺序:基本语法,类相关的语法,内部类的语法,继承相关的语法,异常的语法,线程的语...

  • Java初级面试题

    1. Java基础部分 基础部分的顺序:基本语法,类相关的语法,内部类的语法,继承相关的语法,异常的语法,线程的语...

  • 高考英语基础语法单句语法填空

    高考英语基础语法单句语法填空

  • Go语言基础语法--注释、基础结构2

    章节 GO语言基础语法--注释、基础结构(重要) 1.GO语言基础语法---注释、基础结构 基础结构注意事项 源文...

网友评论

    本文标题:02-swift基础语法

    本文链接:https://www.haomeiwen.com/subject/mascettx.html