Swift -- 7.5 类型属性,方法
在不加特定修饰符的情况下,在swift类型中定义的属性,方法都是属于实例的。
可以使用static来声明枚举和结构体的类型属性/方法
使用class来声明类的类型属性/方法
swift对类型成员和实例成员的区分泾渭分明:通常来说,类型成员不允许访问实例成员,实例成员也不允许访问类型成员
/* 枚举可以包含类型存储属性和类型计算属性, 枚举可以包含实例计算属性,不能包含实例存储属性 *///枚举的类型属性 enum Seasonz {static var desc : String?static let name = "jijie"static var info:String{get{return "test \(desc)"}set{print("the season is \(newValue)")}} } Seasonz.desc = "jijielei" print(Seasonz.name) Seasonz.info = "new info" print(Seasonz.info)/* 结构体可以包含类型属性,包括类型存储属性和类型计算属性 结构体可以包含实例计算属性和实例存储属性 *///结构体包含类型属性 struct FkRange{static var desc : String?static let maxWidth = 1000static let maxheight = 4000static var maxArea : Int{return maxWidth * maxheight} } FkRange.desc = "描述范围的结构体" print(FkRange.desc) print(FkRange.maxWidth) print(FkRange.maxheight) print(FkRange.maxArea)/* 类中不能定义类型存储属性,只能包含类型计算属性 类中可以包含实例存储属性,实例计算属性 */ //不能定义类型存储属性可能是为了保持与oc的兼容 class Users {class var nameMaxLength : Int{get{return 24}set{print("fuzhi \(newValue)")}} } print(Users.nameMaxLength) Users.nameMaxLength = 20//枚举的值类型方法 enum Seasonon {static var desc : String?static let name = "season"static func info(){print("the name is \(name)")}static func setDesc(desc : String){self.desc = desc} } Seasonon.info() Seasonon.setDesc("describe the change of the weather") print(Seasonon.desc) /* 类型方法不能直接访问实例成员,如果希望在类型方法中访问实例成员,必须先创建该类型的实例,然后以实例作为调用者来访问实例成员 *///类的类型方法 class Math {class var pi:Double{return 3.1415926}class func abs(value:Double) -> Double{return value < 0 ? -value : value}class func pow(base:Double, _ exponent:Int) -> Double {var result = 1.0for _ in 1...exponent{result *= base}return result}class func radian2Degree(redian:Double) -> Double {return redian * 180 / pi}class func degree2Radian(degree:Double) -> Double {return degree * self.pi / 180} } print(Math.pi) print(Math.pow(2, 4)) print(Math.radian2Degree(1.57)) print(Math.degree2Radian(45))
转载于:https://www.cnblogs.com/chebaodaren/p/5591068.html
Swift -- 7.5 类型属性,方法相关推荐
- Java浅克隆与深克隆区别详解与实现,以及String类型属性克隆为什么不受影响?克隆clone()方法中为什么是super.clone()
1. 浅克隆实现 public class CloneTest {public static void main(String[] args) throws CloneNotSupportedExce ...
- Swift - 类型属性(类静态属性)和类方法(类静态方法)
1,结构体struct和枚举enum的静态属性,静态方法使用static关键字 1 2 3 4 5 6 7 8 9 10 struct Account { var amount : Doub ...
- fastjson转换包含date类型属性的对象时报错com.alibaba.fastjson.JSONException: For input string 解决方法
fastjson转换包含date类型属性的对象时报错com.alibaba.fastjson.JSONException: For input string 解决方法 pojo里面的date属性上要加 ...
- 1023day5:class类属性方法、每次执行类属性+1、内建模块、时间装饰器wrapper、面向对象__slots__方法:限制类的属性等基础知识、正则表达式基础知识、多态鸭子类型
文章目录 一.类class 1.Python类class 属性 方法 2.类的构造方法__init__() 3.每次执行一次类的属性+1 二.模块 1.内建模块 2.第三方模块 3.定义自己的模块 三 ...
- swift. 扩展类添加属性_Swift中用到extension的一些基本的扩展功能讲解
现有的类,结构或枚举类型的功能可以在扩展的帮助下加入.类型的功能可以使用扩展加入,但重写的功能不能使用扩展. Swift 扩展功能: 添加计算属性并计算类型属性 定义实例和类型的方法 提供了新的初始化 ...
- Swift编程十二(方法)
案例代码下载 方法 方法是与特定类型相关联的函数.类,结构和枚举都可以定义实例方法,这些方法封装了用于处理给定类型的实例的特定任务和功能.类,结构和枚举也可以定义类型方法,它们与类型本身相关联.类型方 ...
- ES6语法~解构赋值、箭头函数、class类继承及属性方法、map、set、symbol、rest、new.target、 Object.entries......
2015年6月17日 ECMAScript 6发布正式版本 前面介绍基本语法, 后面为class用法及属性方法.set.symbol.rest等语法. 一.基本语法: 1. 定义变 ...
- 如何查看 el-form-item 的prop属性_PHP 7.4中的类型属性(Typed Properties)
php中文网最新课程 每日17点准时技术干货分享 在PHP 7.4中添加了类型属性,并对PHP的类型系统进行了重大改进.这些更改是完全可选的,并且不破坏以前的版本. 在这篇文章中,我们将深入了解这个特 ...
- php 判断类型array,判断一个变量是数组Array类型的方法_javascript技巧
在很多时候,我们都需要对一个变量进行数组类型的判断.JavaScript中如何判断一个变量是数组Array类型呢?我最近研究了一下,并分享给大家,希望能对大家有所帮助. JavaScript中检测对象 ...
最新文章
- 纸质图书与电子图书的营销策略研究
- mysql运用与实践_MySQL开发与实践 PDF 下载
- 【第二十七章】 springboot + zipkin(brave-okhttp实现)
- 如何用python实现地图定位_基于 PyQt5 实现地图中定位相片拍摄位置
- ap6212 Linux 蓝牙,替代正基AP6212、AP6330的SDIO WiFi+UART蓝牙组合
- no crontab for root 问题解决方法
- 自定义应用程序配置文件(app.config)
- git clone server certificate verification failed. CAfile: /etc/ssl/certs/ca-certificates.crt CRLfile
- 简单谈谈对软件工程的理解
- 微信小程序登录授权开发
- ansys变形太夸张_ANSYS大变形典例:线性与非线性分析差别巨大,如何选择?
- Ubuntu下查看隐藏文件
- 通过代码提高编程能力
- html+css制作月亮
- 关于孔明先生职称申请报告的回函
- Scrapy 第一次爬虫
- 工信部于佳宁:区块链要服务实体经济
- 2019年什么工作最有前景?互联网/IT行业职业方向大盘点!
- javaSE探赜索隐之一<小生的第一篇CSDN博客,欢迎大家指正>
- 微软与网景关于浏览器的恩怨情仇
热门文章
- pytorch nn.Module.parameters
- opencv-api getPerspectiveTransform
- sizeof运算符介绍以及常见的坑
- 如何使用 vSphere Certificate Manager 替换 SSL 证书 (2097936)
- vSphere 7.0 GA正式版发布
- Spring Boot学习总结(27)—— Spring Boot中两个数据库迁移工具Liquibase和Flyway的比较
- MyBatis学习总结(26)——Mybatis源码中使用了哪些设计模式?
- Java基础学习总结(126)——Log4j2.xml生产环境实用配置
- Spring Boot学习总结(7)——SpringBoot之于Spring优势
- Windows学习总结(9)——Windows系统常用的网络控制指令