Swift   发布时间:2022-03-31  发布网站:大佬教程  code.js-code.com
大佬教程收集整理的这篇文章主要介绍了8.3 Swift结构体构造器大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。

概述

        /**          结构体构造器          */                  /**          对于构造函数很多人都会有这样一个误区,认为构造函数是用来构造一个实例的或者构造          一个对象的。这种说法我认为是不对的哈。          当我们构造一个实例,实例需要分配一个内存。而分配内存这个过程不称之为构造,这个称之为实例化,      

/**

结构体构造器

*/

/**

对于构造函数很多人都会有这样一个误区,认为构造函数是用来构造一个实例的或者构造

一个对象的。这种说法我认为是不对的哈。

当我们构造一个实例,实例需要分配一个内存。而分配内存这个过程不称之为构造,这个称之为实例化,

Swift语言中,结构体或者我们接下来讲的类,它们的对象或者说实例被构造出来之后需要有一个

确定的初始值。

*/

struct Rect {

var width: Double = 5.0

var height: Double = 6.0

}

var rect: Rect = Rect()

// 也可以这样子写

// var rect = Rect.init()

print("------------------->")

print(rect)

@H_407_197@

// 所以这样子初始化出来的实例有初始值, 5.0 高度6.0这个对象里面的每一个成员变量都需要一个初始值

// 如果没有初始值,我们可以看到就不可以这样子初始化一个实例

/**

所以这个初始化的工作啊,或者赋初始值的这个工作是由构造函数来完成的。这是构造函数的目的,

构造函数并不负责内存的分配。

对象或者说这个实例的内存的分配是由系统来完成的。

当内存分配完毕之后呢,系统会马上调用构造函数,而构造函数负责给系统内存进行初始化,确切来讲是给这个对象或者说实例的成员变量进行初始化,

这就是构造函数这样一个作用。

对于swift语言中的结构体呢,它不同于COC中的结构体,它非常的接近于我们这个类的概念,

因为结构体里面可以添加方法,可以添加计算属性,还有些其他的,无限于接近我们的类。

因此swift语言中的结构体呢也有一个叫构造函数这样一个东西。它跟类的构造函数几乎是一摸一样的。

*/

/**

首先构造函数可以分为两个层次啊,

一我们可以自定义构造函数。之后的章节中讲解

二系统认的构造函数

*/

@H_407_197@

// 结构体逐一成员构造器

var rect1: Rect = Rect(width:1,height: 11)

@H_407_197@

// Argument 'width' must precede argument 'height',也就是顺序不能颠倒。

// var rect1: Rect = Rect(height:1,width: 11)

@H_407_197@

var rect2: Rect = Rect.init(width: 2.0,height: 2.0)

print("------------------->")

print(rect2)

print("------------------->")

print("rect1==\(rect1)")

// rect1==(Rect #1)(width: 1.0,height: 11.0)

print(rect1.width)

print(rect1.height)

/**

无论是结构体还是我们接下来讲的类,它的构造函数名称都是这个结构体或类的名称

我们可以认为这个Rect是构造函数名称,然后括号里面是它的实参。

*/

@H_407_197@

/**

结构体逐一成员构造器是指,构造函数里面的参数的个数,类型,顺序跟我们结构体定义的参数的个数,类型,顺序是完全匹配的。

*/

/**

我们没有自定义构造函数的时候,系统会认提供了两个构造函数

也就是说所有的实例必须通过构造函数

结构体的构造函数,类的构造函数我们会单独的拿出一章来分析。

*/

大佬总结

以上是大佬教程为你收集整理的8.3 Swift结构体构造器全部内容,希望文章能够帮你解决8.3 Swift结构体构造器所遇到的程序开发问题。

如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。