概述
2019独角兽企业重金招聘Python工程师标准>>>
1.简介
和c语言不同,在swift中结构体和类有相同的结构,都具有属性和方法
但是不要求定义和实现在两个文件中
2.类与结构体的对比
class CustomerManger {
var name:String!
var Pid:Int!
}
var c1 = CustomerManger()//实例化
struct Point {
var x:Int
var y:Int
}
var p1 = Point(x: 2, y: 4)//实例化
3.类的属性与调用
class Dog {
var name: String!
var age: Int!
init(){
name = "hua hua"
age = 3
}
func show(){
print("(name),(age)")
}
}
var d1 = Dog()
d1.show()//跟oc不同,swift调用方法是点语法
d1.name = "xiao hei"
d1.age = 5
d1.show()
4.结构体成员的默认构造器
struct Point {
var x:Int
var y:Int
}
var p1 = Point(x: 10, y: 20)//
print("(p1.x),(p1.y)")
5.结构体和枚举都是值类型,赋值过程是值拷贝的
struct Point {
var X:Int
var y:Int
}
var p1 = Point(X: 10, y: 20)
var p2 = p1
print("(p1.X),(p1.y)")
print("(p2.X),(p2.y)")
print("--------")
p1.X = 100
p1.y = 200
print("(p1.X).(p1.y)")
print("(p2.X),(p2.y)")//p1值改变,而p2值不变
//实例
enum Direction {
case east,west,south,north
}
var d1 = Direction.east
var d2 = d1
print("(d1)")
print("(d2)")
print("---------")
d1 = .north
print("(d1)")
print("(d2)")
7.类是引用类型
class Dog {
var name: String
var age: Int
init(){
name = "hua hua "
age = 2
}
func show(){
print("(name),(age)")
}
}
var d1 = Dog()
var d2 = d1
d1.show()
d2.show()
print("----------")
d1.name = "xiao hei"
d1.age = 4
d1.show()
d2.show()//传递的是地址,所以值都改变
print(d1===d2)//是否是同一个对象,true
var d3 = Dog()
print(d1===d3)//false
注意:swift中,一个引用类型的实例与c语言中的指针类似,不同的是并不是直接指向内存中的某个地址,
而且也不要求使用星号来表明在创建一个引用,swift中这些引用与其他的常量或变量的定义方式相同
8.类与结构的选择
结构体适用条件:
结构体主要目的是用来封装少量相关简单数据值,而且在实例的赋值或传递中,封装的数据将会被拷贝而不是被引用。
结构体也没有继承这一特性
9.在oc中,字符串,数组,字典都是以类的形式实现,而在swift中以值传递方式不同
转载于:https://my.oschina.net/u/2598427/blog/633174
最后
以上就是缓慢诺言为你收集整理的08--swift之类与结构体的全部内容,希望文章能够帮你解决08--swift之类与结构体所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
发表评论 取消回复