我是靠谱客的博主 缓慢诺言,最近开发中收集的这篇文章主要介绍08--swift之类与结构体,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

2019独角兽企业重金招聘Python工程师标准>>> hot3.png

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之类与结构体所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(38)

评论列表共有 0 条评论

立即
投稿
返回
顶部