博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
《从零开始学Swift》学习笔记(Day 34)——静态属性是怎么回事?
阅读量:6603 次
发布时间:2019-06-24

本文共 1763 字,大约阅读时间需要 5 分钟。

我先来设计一个类:有一个Account(银行账户)类,假设它有3个属性:amount(账户金额)、interestRate(利率)和owner(账户名)。

在这3个属性中,amountowner会因人而异,不同的账户这些内容是不同的,而所有账户的interestRate都是相同的。

amountowner属性与账户个体有关,称为实例属性interestRate属性与个体无关,或者说是所有账户个体共享的,这种属性称为静态属性类型属性

面向对象类型(结构体、枚举和类)都可以定义静态属性,它们的语法格式分别如下所示:

1
<span style=
"font-size:14px;"
>struct 结构体名 {   
//定义结构体, 结构体中可以定义静态存储属性和静态计算属性<br>    static var(或let) 存储属性  = "xxx"  <br>    ...<br>    static var 计算属性名: 属性数据类型 {  <br>    get {      <br>        return 计算后属性值  <br>    }<br>    set (新属性值) {  <br>        ...<br>    }<br>    }<br>}<br></span>


enum 枚举名 {  //定义枚举,枚举中不可以定义实例存储属性,但可以定义静态存储属性,也可以定义静态计算属性

   

1
<span style=
"font-size:14px;"
>
static 
var(或let)存储属性  = 
"xxx"   
<br>    ...<br>    
static 
var 计算属性名: 属性数据类型 {   <br>    get {  <br>        
return 
计算后属性值    <br>    }    <br>    set (新属性值) {<br>        ...<br>    }    <br>    }<br>}<br> <br>
class 
类名 {    
//定义类,类中不仅可以定义实例存储属性,还可以定义静态存储属性<br>    staticvar(或let) 存储属性 = "xxx"   <br>    ...<br>    class(或static) var 计算属性名: 属性数据类型 {<br>    get {<br>        return 计算后属性值<br>    }   <br>    set (新属性值) {  <br>        ...<br>    }  <br>    }<br>}   <br>结构体静态计算属性也可以是只读的,语法如下:<br>static var 计算属性名: 属性数据类型 {<br>    return 计算后属性值<br>}<br></span>


 

看一个Account结构体静态属性示例:

1
<span style=
"font-size:14px;"
>struct Account {
//定义Account结构体<br>    <br>    var amount: Double = 0.0                   //账户金额<br>    var owner: String = ""                        //账户名<br>    <br>    static var interestRate: Double = 0.0668  //定义静态存储属性interestRate利率<br> <br>    static var staticProp: Double {   //定义静态计算属性staticProp<br>        return interestRate * 1_000_000<br>    }<br>    <br>    var instanceProp: Double {    //定义实例计算属性instanceProp<br>        return Account.interestRate * amount<br>    }<br>}<br> <br>//访问静态属性<br>print(Account.staticProp)    <br> <br>var myAccount = Account()<br>//访问实例属性<br>myAccount.amount =1_000_000<br>//访问静态属性<br>print(myAccount.instanceProp<br></span>

)    

本文转自 tony关东升 51CTO博客,原文链接:http://blog.51cto.com/tonyguan/1746605,如需转载请自行联系原作者

你可能感兴趣的文章
[转]23个最有用的Elasticsearch检索技巧
查看>>
你必须知道的HTTP基本概念
查看>>
当下拉列表数据过大时,该如何应对?
查看>>
使用OpenGrok搭建 可搜索可跳转的源码 阅读网站
查看>>
HTML5开发中的javascript闭包
查看>>
Android ContentProvider调用报错"Bad call:..."及相关Binder权限问题分析
查看>>
你真的会用strong-weak dance吗?
查看>>
ionic3 教程(二)登录页制作
查看>>
Python正则表达式初识(四)
查看>>
C++课大作业 魔兽世界Part 2
查看>>
不明恶意攻击致<搜狗搜索><搜索结果>跳转<百度搜索>技术原理分析
查看>>
Java并发系列—工具类:CyclicBarrier
查看>>
不务正业的前端之SSO(单点登录)实践
查看>>
linux 远程gui管理 webmin
查看>>
CUDA学习(八十七)
查看>>
VR产业转移线下发力 移动VR体验馆落户北京国美
查看>>
mysql回收用户权限
查看>>
Android之Adapter用法总结
查看>>
Windows server 2012安装.NET 3.5
查看>>
UIWebview与js交互[转]
查看>>