首页 > 其他分享 >无涯教程-Swift - Properties(属性)

无涯教程-Swift - Properties(属性)

时间:2024-01-29 12:31:45浏览次数:28  
标签:存储 Int 无涯 print var InternalMarks Swift Properties 属性

Swift 4语言为类,枚举或结构提供属性以关联值。

存储属性

Swift 4引入了存储属性的概念来存储常量和变量的,常量的存储属性由'let'关键字定义,变量的存储属性由'var'关键字定义。

  • 在定义期间, 存储的属性提供"默认值"
  • 初始化期间,用户可以初始化和修改初始值
struct Number {
   var digits: Int
   let pi=3.1415
}

var n=Number(digits: 12345)
n.digits=67

print("\(n.digits)")
print("\(n.pi)")

运行上述程序时,我们得到以下输出-

67
3.1415

考虑以上代码中的以下行-

let pi=3.1415

在此,pi=3.1415将变量pi初始化为存储的属性值。

下面的示例通过let来定义不可改变的存储属性。

struct Number {
   var digits: Int
   let numbers=3.1415
}

var n=Number(digits: 12345)
n.digits=67

print("\(n.digits)")
print("\(n.numbers)")
n.numbers=8.7

运行上述程序时,我们得到以下输出-

error: cannot assign to 'numbers' in 'n'
n.numbers=8.7

而不是将"numbers"重新初始化为8.7,而是返回一条错误消息,指出"numbers"被声明为常量。

惰性存储属性

Swift 4提供了一个名为“惰性存储属性"的属性,该属性在首次初始化变量时不会计算初始值。'lazy'修饰符用于变量声明之前,以使其惰性存储属性。

class sample {
   lazy var no=number()    //`var` 声明是必需的。
}

class number {
   var name="Swift 4"
}

var firstsample=sample()
print(firstsample.no.name)

运行上述程序时,我们得到以下输出-

Swift 4

计算属性

与存储值无关,计算的属性提供了一个getter和一个可选的setter,以间接检索和设置其他属性和值。

class sample {
   var no1=0.0, no2=0.0
   var length=300.0, breadth=150.0

   var middle: (Double, Double) {
      get {
         return (length/2, breadth/2)
      }
      
      set(axis){
         no1=axis.0 - (length/2)
         no2=axis.1 - (breadth/2)
      }
   }
}

var result=sample()
print(result.middle)
result.middle=(0.0, 10.0)

print(result.no1)
print(result.no2)

运行上述程序时,我们得到以下输出-

(150.0, 75.0)
-150.0
-65.0

当计算的属性未定义新值时,将为该特定变量设置默认值。

只读属性

计算属性中的只读属性定义为具有getter但不包含setter的属性,它始终用于返回值。通过“."进一步访问变量。

class film {
   var head=""
   var duration=0.0
   var metaInfo: [String:String] {
      return [
         "head": self.head,
         "duration":"\(self.duration)"
      ]
   }
}

var movie=film()
movie.head="Swift 4 Properties"
movie.duration=3.09

print(movie.metaInfo["head"]!)
print(movie.metaInfo["duration"]!)

运行上述程序时,我们得到以下输出-

Swift 4 Properties
3.09

属性观察器

在Swift 4中,观察和响应属性值使用了属性观察器,每次设置属性值时,都会调用属性观察器,除了惰性存储的属性,我们还可以通过"overriding"方法将属性观察器添加到"inherited"属性中。

class Samplepgm {
   var counter: Int=0 {
      willSet(newTotal){
         print("Total Counter is:\(newTotal)")
      }
      
      didSet {
         if counter > oldValue {
            print("Newly Added Counter\(counter - oldValue)")
         }
      }
   }
}

let NewCounter=Samplepgm()
NewCounter.counter=100
NewCounter.counter=800

运行上述程序时,我们得到以下输出-

Total Counter is: 100
Newly Added Counter 100
Total Counter is: 800
Newly Added Counter 700

类型属性

在类型定义部分使用大括号{}定义属性,并且变量的范围也已在前面定义。为了为值类型定义类型属性,使用" static"关键字,对于类类型使用" class"关键字。

struct Structname {
   static var storedTypeProperty=" "
   static var computedTypeProperty: Int {
      //return an Int value here
   }
}

enum Enumname {
   static var storedTypeProperty=" "
   static var computedTypeProperty: Int {
      //return an Int value here
   }
}

class Classname {
   class var computedTypeProperty: Int {
      //return an Int value here
   }
}

查询和设置属性

就像实例属性一样,查询类型属性并设置为“."。语法仅针对类型,而不是指向实例。

struct StudMarks {
   static let markCount=97
   static var totalCount=0
   
   var InternalMarks: Int=0 {
      didSet {
         if InternalMarks > StudMarks.markCount {
            InternalMarks=StudMarks.markCount
         }
         if InternalMarks > StudMarks.totalCount {
            StudMarks.totalCount=InternalMarks
         }
      }
   }
}

var stud1Mark1=StudMarks()
var stud1Mark2=StudMarks()

stud1Mark1.InternalMarks=98
print(stud1Mark1.InternalMarks)

stud1Mark2.InternalMarks=87
print(stud1Mark2.InternalMarks)

运行上述程序时,我们得到以下输出-

97
87

参考链接

https://www.learnfk.com/swift/swift-properties.html

标签:存储,Int,无涯,print,var,InternalMarks,Swift,Properties,属性
From: https://blog.51cto.com/u_14033984/9463509

相关文章

  • 无涯教程-Swift - Struc(结构)
    Swift4提供了一个灵活的构建块,可以将结构struct用作结构,通过使用这些结构,可以一次定义构造方法和属性。结构语法Structuresaredefinedwitha'Struct'Keyword.structnameStruct{Definition1Definition2---DefinitionN}结构定义如假设我们必须访......
  • 无涯教程-Swift - 集合(Sets)
    Swift4Sets用于存储相同类型的不同值,但它们没有数组的确定顺序,如果要确保没有重复的值,则可以使用Set集合而不是数组。创建Set集您可以使用以下初始化语法创建一个特定类型的空集-varsomeSet=Set<Character>()//字符可以替换为set的数据类型。访问和修改您可以使用......
  • 无涯教程-Swift - 数组
    Swift4数组用于存储相同类型的值的有序列表。如果将创建的数组分配给变量,则它始终是可变的,这意味着您可以通过添加,删除或更改其元素来对其进行更改;但是,如果将数组分配给常量,则该数组是不可变的,并且其大小和内容无法更改。创建数组您可以使用以下初始化器语法创建某种类型的空......
  • 无涯教程-Swift - 循环语句
    在某些情况下,您需要多次执行一个代码块。通常,语句是按顺序执行的:函数中的第一个语句首先执行,然后第二个执行,依此类推。循环语句使我们可以多次执行一个语句或一组语句。以下是大多数编程语言中循环语句的概述-Swift4编程语言提供了以下种类的循环来处理循环需求。Sr.NoLoop......
  • 无涯教程-Swift - 条件判断
    件判断结构要求程序员根据一个或多个要条件判断,如果条件为true时要执行的一个或多个语句,否则执行其它语句。以下是在大多数编程语言中找到的典型决策结构的概述-Swift4提供以下类型的决策声明。单击以下链接以查看其详细信息。Sr.NoStatement&描述1ifstatementif语......
  • 无涯教程-Swift - 运算符
    运算符是一个符号,告诉编译器执行特定的数学或逻辑操作,Swift包含丰富的内置运算符,并提供以下类型的运算符-算术运算符比较运算符逻辑运算符按位运算符范围运算符其它运算符本教程将逐一说明算术,关系,逻辑,按位,赋值和其他运算符。算术运算符下表显示了Swift4语言支持的所......
  • 无涯教程-Swift - 常量
    常数是指程序在执行过程中不得更改的固定值,常量可以是任何基本数据类型,如整数常量,浮点常量,字符常量或字符串文字,还有枚举常量。常量与常规变量一样,只是其值在定义后不能修改。常量声明使用常量之前,必须使用let关键字声明它们,如下所示:letconstantName=<initialvalue>以......
  • 无涯教程-Swift - 元组(Tuples)
    Swift4还引入了Tuples元组类型,该类型用于将多个值组合在单个复合值中,元组中的值可以是任何类型,并且不必是同一类型。如,("LearnFK",123)是一个具有两个值的元组,一个值是字符串Type,另一个是整数类型。这是元组声明的语法-varTupleName=(Value1,value2,…anynumberofval......
  • 无涯教程-Swift - 可选项
    Swift4还引入了Optionals类型,用于处理缺少值的情况,可选的选项是"有一个值,它等于x"或"根本没有值"。Optional是一种类型,实际上是Swift4的新函数枚举之一,它有两个可能的值,None和Some(T),其中T是Swift4中可用的正确数据类型关联值。这是一个可选的Integer整数声明-varper......
  • 无涯教程-Swift - 变量声明
    变量为我们提供了程序可以操纵的命名存储,Swift4中的每个变量都有一个特定的类型,该类型确定变量的内存大小和布局。Swift4支持以下基本类型的变量-Int或UInt  - 用于整数。更具体地说,可以使用Int32,Int64定义32或64位有符号整数,而UInt32或UInt64定义32或64位无符号整数......