澳门在线威尼斯官方 > 澳门在线威尼斯官方 > 【澳门在线威尼斯官方】Swift编程之旅,类和结构

原标题:【澳门在线威尼斯官方】Swift编程之旅,类和结构

浏览次数:131 时间:2019-09-30

结构体和枚举是值类型

值类型是一种当它被钦点到常量也许变量,或许被传送给函数时会被拷贝的门类。

let hd = Resolution(width: 1920, height: 1080)
var cinema = hd
cinema.width = 2048
println("cinema is now (cinema.width) pixels wide")
//println "cinema is now 2048 pixels wide"
print("hd is still (hd.width) pixels wide")
// prints "hd is still 1920 pixels wide"

enum CompassPoint {
    case North, South, East, West
}
var currentDirection = CompassPoint.West
let rememberedDirection = currentDirection
currentDirection = .East
if rememberedDirection == .West {
    print("The remembered direction is still .West")
}
// prints "The remembered direction is still .West"

 

类与结构体的对照

   每种成员起始化器的结构类型

类和结构体之间的抉择

 注意:与 Objective-C 语言不相同的是,Swift允许间接设置结构体属性的子属性。下边包车型客车末尾二个事例,就是直接设置了someVideoMode中resolution属性的width这一个子属性,以上操作并不供给从新安装resolution属性。

概念语法

  class SomeClass {
      // class definition goes here
  }  
  struct SomeStructure {
      // structure definition goes here
  }

一个事实上的代码例子如下:

struct Resolution {
    var width = 0
    var height = 0
}
class VideoMode {
    var resolution = Resolution()
    var interlaced
}

 

类和结构体

苹果官方文书档案 Classes and Structures

苹果官方文书档案翻译 类和结构体

不等价于 ( !== )

字符串,数组和字典的赋值与拷贝行为

详尽文书档案最先的文章

  结构体和枚举是值类型

会见属性

print("The width of someResolution is (someResolution.width)")
// prints "The width of someResolution is 0"

print("The width of someVideoMode is (someVideoMode.resolution.width)")
// prints "The width of someVideoMode is 0"

someVideoMode.resolution.width = 1280
print("The width of someVideoMode is now (someVideoMode.resolution.width)")

留意:结构中华全国体育总会是通过被复制的主意在代码中传递,因而请不要选择引用计数。

类与结构体实例

let someResolution = Resolution()
let someVideoMode = VideoMode()

 

特性运算符

寻找八个常量或许变量是否援用自同叁个类实例特别有用,为了允许那样,Swift提供了多个特色运算符:

相同于 ( ===)
不相同于( !==)

if tenEighty === alsoTenEighty {
    print("tenEighty and alsoTenEighty refer to the same VideoMode instance.")
}
// prints "tenEighty and alsoTenEighty refer to the same VideoMode instance."

 

类是援引类型

let tenEighty = VideoMode()
tenEighty.resolution = hd
tenEighty.interlaced = true
tenEighty.name = "1080i"
tenEighty.frameRate = 25.0

let alsoTenEighty = tenEighty
alsoTenEighty.frameRate = 30.0

print("The frameRate property of tenEighty is now (tenEighty.frameRate)")
// prints "The frameRate property of tenEighty is now 30.0"

  类是援用类型

布局体类型的积极分子初叶化器

let vga = Resolution(width: 640, height: 480)

可是,类实例不会摄取暗中认可的积极分子初叶化器。

   Resolution结构体和VideoMode类的定义仅描述了什么是Resolution和VideoMode。它们并不曾描述一个特定的分辨率(resolution)或然摄像形式(video mode)。为了描述二个一定的分辨率恐怕录像方式,大家要求创建一个它们的实例。如下

 

 

 过这种艺术所开创的类依旧结构体实例,其属均会被初叶化为私下认可值。

 

  相比较类和结构体

let vga = resolution(width:640, heigth: 480) 
someVideoMode.resolution.width = 12880 
println("The width of someVideoMode is now (someVideoMode.resolution.width)") 

个值类型是二个值,当它被分配给一个变量或常量时,或当它被传送给函数时,它的值是被复制的,那代表它们的实例,以及实例中所包涵的其余值类型属性,在代码中传递的时候都会被复制。

示范如下

  概念语法

  • 概念用于存款和储蓄值的性质
  • 概念提供特定技巧或效果与利益的形式
  • 概念提供利用下标语法访问值的下标
  • 概念设置开端状态的初步化方法
  • 经过扩张以充实私下认可达成的功用
  • 相符合同提供某种标准作用

 

与值类型不一致,援引类型在被给予到二个变量,常量或然被传送到二个函数时,操作的并非其拷贝。由此,引用的是已存在的实例本人实际不是其拷贝

  假若你有 C,C++ 或许 Objective-C 语言的经验,那么您恐怕会知晓这几个语言使用指针来援引内部存款和储蓄器中的地点。二个斯维夫特常量或许变量引用八个引用类型的实例与C语言中的指针类似,分裂的是并不直接指向内部存储器中的有些地方,何况也不要求你利用星号(*)来注解你在创造多少个援引。Swift中那几个援引与另外的常量或变量的概念格局相同。

println("The width of someResolution is (someResolution.width)")

 

  恒等运算符

应用点语法访问实例中所含有的天性。其语法规则是,实例名背后紧跟属性名,两个通过点号(.)连接:

 

  注意:经常四个类的实例被可以称作对象。但是在Swift中,类和结构体的关系要比在其余语言中更是的周密,本章中所研究的大部分功用都能够用在类和结构体上。由此,大家会主要选用实例并不是指标。

本文由澳门在线威尼斯官方发布于澳门在线威尼斯官方,转载请注明出处:【澳门在线威尼斯官方】Swift编程之旅,类和结构

关键词:

上一篇:没有了

下一篇:没有了