发布于 2015-02-04 13:42:45 | 234 次阅读 | 评论: 0 | 来源: PHPERZ

这里有新鲜出炉的Swift教程,程序狗速度看过来!

Swift编程语言

SWIFT,苹果于2014年WWDC(苹果开发者大会)发布的新开发语言,可与Objective-C*共同运行于Mac OS和iOS平台,用于搭建基于苹果平台的应用程序。


本文为大家讲解的是Swift 类和结构体的创建示例,感兴趣的同学参考下。

类是用关键字 class来表示的, 结构体是用struct来表示的,下面附上具体代码:

class SomeClass {
    
}

struct Length {
    //在Swift中可以对变量初始化
    var start : Float = 0.0
    var end : Float = 0.0
    //在Swift中可以定义方法
    func calLength() {
        println(self.end - self.start)
    }
}
 
//调用了默认的构造器 init
var length = Length()
//点语法访问元素
length.start = 7.0
length.end = 3.0
length.calLength()

// 逐一构造器 ,  只有结构体才有的, 类是没有的
var len = Length(start: 3.0, end: 9.9)

以上跟OC中有点相似,可以通过点语法访问元素变量。

下面再附上具体示例:

func calLength(length: Length) {
    println(length.start - length.end)
}

calLength(length)

这个是用来计算点之间的距离的。

除此之外我们今天还学习了计算类型,不是直接存值,而是系统提供了一个getter方法来获取值,并且还提供了一个setter方法来设置新的值具体示例如下

struct Rect {
    var origin = Pointed()
    var Rect = hah()
    var center : Pointed {
        get{
            let centerX = self.origin.x + self.Rect.width / 2.0
            let centerY = self.origin.y + self.Rect.height / 2
            return Pointed(x: centerX, y: centerY)
        }
        set(newCenter){
            origin.x = newCenter.x - self.Rect.width / 2
            origin.y = newCenter.y - self.Rect.height / 2
        }
    }
    //使用mutating关键字来修饰 作用:可以修改属性的值
    mutating func calCenter() {
//        return Pointed(x: self.origin.x + self.Rect.width / 2.0, y: self.origin.y + self.Rect.height / 2.0)
        self.center = Pointed(x: self.origin.x + self.Rect.width / 2, y: self.Rect.height / 2 + self.origin.y)
    }
}

var rect = Rect(origin: Pointed(x: 50, y: 55), Rect: hah(width: 100, height: 55))
rect.calCenter()

var rect1 = Rect()
rect1.origin.x = 100
rect1.origin.y = 100
rect1.Rect.height = 100
rect1.Rect.width = 100
rect1.center
rect1.center = Pointed(x: 300, y: 300)
rect1.origin

通过mutating关键字可以进行属性值得修改。

类跟结构体的选择:

按照通用的准则:当符合一下其中一条或者多条条件的时候,请考虑使用结构体

  1.结构体大的使用目的:用来封装尽量少得简单数据

  2.结构体拷贝的时候,属于值得拷贝

  3.任何在结构体重存储的值类型属性,都会被拷贝,而不是引用

  4.结构体无需要去继承另一个已存在的类型的属性或者行为

虽然今天讲的不是很多吧,更多的是回顾以前所学习的知识点,虽然算不上是大牛吧,但是还是希望可以和友友们多进行交流,不管是技术上,还是什 么,都希望可以从中得到提高,所以希望大家都不吝赐教了,最后为大家附上本堂课的一个练习题,题目是这样的:定义一个Student的结构体, name,age作为属性, 构造方法(对name,age赋初值),实例方法(pringStuInfo),类方法(printStuSorry)。下面便是详细代码了:

struct Student {
    static var name = "小花"
    static var age = 0.0
    static func printStuSorry() {
        println("ByeBye")
    }
    func pringStuInfo() {
        println("哈哈, 你错了")
    }
}

Student.name = "网吧"
Student.name
Student.printStuSorry()
var stu = Student()
stu.pringStuInfo()

struct Student1 {
    var name : String?
    var age : Int?
    
    init() {
        self.name = "老王"
        self.age = 25
    }
    init (name:String, age:Int) {
        self.name = name
        self.age = age
    }
    func printStuInfo() {
        //字符串输出:""
        println("name = \(self.name!) age = \(self.age!)")
        
        println("小李子 = \(self.name!) age = \(self.age!)")
    }
    mutating func changeName(newName: String) {
        self.name! = newName
    }

    static func printStuSorry() {
        println("我粗了~×")
    }
}

var Stu2 = Student1()
Stu2.changeName("乔明")
Stu2.printStuInfo()
Student.printStuSorry()

class Teacher {
    var name : String?
    var age : Int?
    init() {
        self.name = "老李"
        self.age = 18
    }
    init(name: String, age: Int) {
        self.name = name
        self.age = age
    }
    
    func printTeachInfo() {
        println("name = \(self.name!), age = \(self.age!)")
    }
    
    class func printTeachSorry() {
        println("错了错了")
    }
}

var stu3 = Teacher()
stu3.printTeachInfo()
Teacher.printTeachSorry()


最新网友评论  共有(0)条评论 发布评论 返回顶部

Copyright © 2007-2017 PHPERZ.COM All Rights Reserved   冀ICP备14009818号  版权声明  广告服务