傲视苍穹iOS《Swift》VIP专题Swift开发iOS学习开发

Swift学习_基本语法之枚举&类&结构体

2017-02-07  本文已影响94人  CN_HarrySun
Swift

1.枚举

enum WeekDay1:Int {
    case Monday1 = 1
    case Tuesday1 = 2
    case Wednesday1 = 3
    case Thursday1 = 4
    case Friday1 = 5
}

enum WeekDay2:Int {
    case Monday2 = 1
    case Tuesday2
    case Wednesday2
    case Thursday2
    case Friday2
}

print(WeekDay1.Friday1)     // 打印   Friday1
print(WeekDay2.Friday2)     // 打印   Friday2

类和结构体

在swift中类和结构体类似,可以把结构体理解成是一种轻量级的类,在swift中结构体不仅可以定义成员变量还可以定义方法
类和结构体具体类似的定义方式,分别使用关键字class和struct

class 类名{
    // 在这里定义类的内容
}

struct 结构体名 {
    // 在这里定义结构体的内容
}

1.类

1.类的定义
class Student{

    var number:Int = 0
    var name:String = ""
    var age:Int = 0
    var height:Int = 0
    var weight:Int = 0

    func demo() {
        print("我是一个学生")
    }
}
2.类的实例与访问
let stu = Student()
stu.name = "小明"
stu.age = 18
stu.demo()      // 打印   我是一个学生
print(stu.name)      // 打印   小明

2.结构体

1.结构体的定义
struct Person{

    var name:String = "张三"
    var age:Int = 20
}
2.结构体的实例和访问
let per = Person()
print(per.name,per.age)     // 打印   张三 20

在swift中类是引用类型,和值类型不同,引用类型在被赋予到一个变量、常量或者被传递到一个函数时,其值不会被拷贝,因此,引用的是已存在的实例本身而不是其拷贝。

如果结构体和类的属性没有设置默认值,那么必须使用结构体和类的构造函数来实例化结构和类。

3.定义一个结构体汽车
struct Car{

    var name:String
    var year:Int
    var color:String

    // 结构体也可以定义方法
    func colorCar() -> String {
    
        return color
    }
}

var car = Car(name:"奔驰",year:2,color:"red")
// 这里使用逐一构造函数为Car的结构体赋属性值,需要注意,这里所赋值必须要和结构体中的成员顺序一致。

// 结构体的方法必须用实例调用
print(car.colorCar())       // 打印   red

结构体是属于值类型的,和类不一样,类是术语引用类型,在swift中,整形、浮点型、布尔值、字符串、数组、字典都是值类型。

在swift中只有类是引用类型,其余一切都是值类型,所有结构体的实例,以及实例中所包含的任何值类型属性,在代码中传递的时候都会被复制。

var car2 = car
car2.color = "green"    // 因为是值的拷贝,不是引用所有car的color还是red,而car2是green了
print(car2.colorCar())       // 打印   green
print(car.colorCar())       // 打印   red

var student2 = stu
var student3 = Student()

if student2 === student3 {

    print("引用同一个实例")
}else{

    print("引用不同实例")       // 打印   引用不同实例
}

3.附:编程题

1.编写一个求圆的面积函数,并调用该函数求一个半径为10的面积
func circleSquare(radius:Double) -> Double{

    let pi = 3.1415927
    return radius * radius * pi

}
print(circleSquare(radius: 10))      // 打印   314.15927
2.编写一段程序,在程序中设计一个函数,并调用这个函数,实现输出8的n次方的值
func calculateNumberProduct(n:Int) -> Int{

    let num = 8
    var total:Int = 1
    for _ in 1...n {
    
        total *= num
    }

    return total
}

print(calculateNumberProduct(n: 3))      // 打印   512

小结

代码已上传至git:
--> 传送门:Swift_基本语法

附录

查看完整专栏《Swift学习》

有问题欢迎指正以及相互探讨 —— CoderSun

上一篇下一篇

猜你喜欢

热点阅读