官方文档学习之《start developing iOS apps(swift)》
1. let 关键字是用来定义常量的,任何类型的常量都可以进行定义;例如:定义字符串 let constantValue1 = "this is a string",也可以定义数值:let constantValue2 = 30 但需要注意:.声明时如果不初始化需要加上常量的类型:let constantValue:String |
2. var 关键字是用来定义变量的,任何类型的变量也可以定义,如:var variableValue1 = "this is string too" , 数值:var variableValue2 = 30. 注意:和let一样,如果定义时没有初始化需要加上变量的数据类型:var variableValue3 :String |
3. 把数值转换成字符插入字符串中:如 let number = 10 let string = "the value is" let newstring = string + (string)number 更加便捷的方法是使用\(value)插入字符串中,例如修改上面的:let string = "the value is \(number)" |
4. 可选值的定义,在数据类型后面加上?,例如 let string:String? = "this is a string" 可选值的作用是它里面不仅仅含有该类型的值,还有一个nil,这是为了避免程序员在编程的时候也不知道自己使用的变量已经为空,而导致系统崩溃。 而为了得到可选值里面的值你需要使用!进行打开 let otherstring = string! |
5. 定义数组,和平常的定义没什么区别:var ratingList = ["Poor", "Fine", "Good", "Excellent"]
如果你想定义一个空的数组: |
6.if中嵌套where的使用:
|
7. switch的使用:
case 后面比较的值可以是字符串、数值、运算,或者几个值在一个case中; hasSuffix(pepper)是用来判断字符串是否以pepper结尾 程序后面需要加上default,不然会发生报错 |
8. for循环的使用:情况(1)half-open range operator (..< )
for可以在规定的区间进行循环使用for i 0..4 情况(2)closed range operator ( var number = 0 for _ in 0...4 { number += 1 } print(number) _是通配符号,在你不需要知道循环里面具体的执行时,可以使用这个,在这里只是把number + 1,所以不需要设置变量来执行内部代码 |
9. 函数的定义使用func 函数名(参数,.......)->返回类型{} 例子: var name = "steven" var day = "thursday" func greet(name:String , day:String) -> String { return "Hello \(name) , today is \(day)" } var result = greet(name, day: day) print(result) 当不需要返回数据时,后面的-> String可以不需要 |
10. 函数的声明,使用class进行声明,格式为:class 函数名{}, 在函数里面可以声明属性和方法;属性用var、let等来进行声明,方法使用func进行声明 class Shape { var number = 0 func simpleShape() -> String { return "a shape with \(number) sides" } } var shape = Shape() shape.number = 1 var shapedescription = shape.simpleShape() print(shapedescription) 但是 ,还有一个地方需要注意的是,在你定义函数的时候需要一个初始化函数,init(),这是为了创建实例的时候方便赋值。如: class nameShape { var numberofside = 0 var name:String init(name:String) { self.name = name } func simpledescription() -> String { return "a shape with \(numberofside) side" } } var assas = nameShape(name: "steven") assas.numberofside assas.simpledescription() assas.name 在创建实例的时候需要把初始化函数的参数传递进去,初始化函数里面有多少个属性就需要传递多少个属性进去。 如果在定义的时候就已经初始化,就不需要再传递参数进去,但是没有初始化的必须放进初始化函数里面,并且创建实例的时候需要传进参数。 |
11. 子类,格式:类名:父类名{} class square: nameShape { var sidelength:Double init(name:String , sidelength:Double) { self.sidelength = sidelength super.init(name: name) numberofside = 4 } func area() -> Double { return sidelength * sidelength } override func simpledescription() -> String { return "a square with sides of legth \(sidelength)" } } let testSquare = square(name:"my text square" , sidelength: 5.2) testSquare.area() testSquare.simpledescription() 当想覆盖父类的方法时,需要使用override,不然会出现报错; 想初始化父类的值时,如果父类使用init来初始化,那需要调用super.init()来进行重新赋值 创建实例的时候也可以判断传递进来的值是否符合要求,要是不符合要求就会传递一个nil,初始化函数需要用init?(){} class Circle: nameShape { var radius:Double init?(radius:Double , name:String) { self.radius = radius super.init(name: name) numberofside = 20 if radius < 0 { return nil } } override func simpledescription() -> String { return "a circle with a radius of \(radius)" } } var circle = Circle(radius: 3.0 , name: "no name") var failCircle = Circle(radius: -7.0 , name: "stenf") circle?.simpledescription() failCircle?.simpledescription() circle?.name failCircle?.name |
12.枚举的定义:在枚举中不仅仅可以定义数值,还好可以定义方法: enum Rank: Int { case Ace = 1 case Two, Three, Four, Five, Six, Seven, Eight, Nine, Ten case Jack, Queen, King func simpDescription() -> String { switch self { case .Ace: return "ace" case .Jack: return "jack" case .Queen: return "queen" case .King: return "king" default: return String(self.rawValue) } } if let convertedRank = Rank(rawValue: 1) let threedescription = convertedRank.simpDescription() } 利用rawValue可以间接的调用枚举里面的方法 也可以像调用方法那样调用枚举里面的数值:let Jack = Rank.Jack let Jackdescription = Jack.simpleDescription() |
13.结构体的定义使用struct : struct Card { var rank: Rank var suit:Suit func simpleDescrption() -> String { return "the \(rank.simpleDescription()) of \(suit.simpleDescription()))" } } var card = Card(rank: .Three , suit: .Clubs) card.simpleDescrption() 结构体里面不仅可以定义不同的数据类型,还可以使用不同的类进行定义实例,但是定义结构体的实例时就需要传输相应的类的值进去。 |
14. 协议的定义:使用protocol protocol ExampleProtocol { var simpleDescription: String { get } func adjust() } simpledescription后面跟着的string{get}是设定这个变量只能阅读,无法改写 |
15. |
16. |
官方文档学习之《start developing iOS apps(swift)》的更多相关文章
- Spring Data Commons 官方文档学习
Spring Data Commons 官方文档学习 -by LarryZeal Version 1.12.6.Release, 2017-07-27 为知笔记版本在这里,带格式. Table o ...
- Spring 4 官方文档学习(十二)View技术
关键词:view technology.template.template engine.markup.内容较多,按需查用即可. 介绍 Thymeleaf Groovy Markup Template ...
- Spring 4 官方文档学习(十一)Web MVC 框架之配置Spring MVC
内容列表: 启用MVC Java config 或 MVC XML namespace 修改已提供的配置 类型转换和格式化 校验 拦截器 内容协商 View Controllers View Reso ...
- Spring 4 官方文档学习(十一)Web MVC 框架之resolving views 解析视图
接前面的Spring 4 官方文档学习(十一)Web MVC 框架,那篇太长,故另起一篇. 针对web应用的所有的MVC框架,都会提供一种呈现views的方式.Spring提供了view resolv ...
- Spring 4 官方文档学习(十一)Web MVC 框架
介绍Spring Web MVC 框架 Spring Web MVC的特性 其他MVC实现的可插拔性 DispatcherServlet 在WebApplicationContext中的特殊的bean ...
- Spring Boot 官方文档学习(一)入门及使用
个人说明:本文内容都是从为知笔记上复制过来的,样式难免走样,以后再修改吧.另外,本文可以看作官方文档的选择性的翻译(大部分),以及个人使用经验及问题. 其他说明:如果对Spring Boot没有概念, ...
- Spring Framework 官方文档学习(四)之Validation、Data Binding、Type Conversion(一)
题外话:本篇是对之前那篇的重排版.并拆分成两篇,免得没了看的兴趣. 前言 在Spring Framework官方文档中,这三者是放到一起讲的,但没有解释为什么放到一起.大概是默认了读者都是有相关经验的 ...
- Spring Framework 官方文档学习(四)之Validation、Data Binding、Type Conversion(二)
接前一篇 Spring Framework 官方文档学习(四)之Validation.Data Binding.Type Conversion(一) 本篇主要内容:Spring Type Conver ...
- Spring boot官方文档学习(一)
个人说明:本文内容都是从为知笔记上复制过来的,样式难免走样,以后再修改吧.另外,本文可以看作官方文档的选择性的翻译(大部分),以及个人使用经验及问题. 其他说明:如果对Spring Boot没有概念, ...
- Spring Framework 官方文档学习(四)之Validation、Data Binding、Type Conversion
本篇太乱,请移步: Spring Framework 官方文档学习(四)之Validation.Data Binding.Type Conversion(一) 写了删删了写,反复几次,对自己的描述很不 ...
随机推荐
- jmeter 实时搜索结果
因为JMeter 2.13你可以得到实时搜索结果发送到后端通过 后端侦听器 使用潜在的任何后端(JDBC.JMS网络服务,Š) 通过提供一个实现类 AbstractBackendListenerCl ...
- 用过的正则(更新ing)
http://www.debuggex.com/ 这个很好用20120912 //十六进制颜色值的正则表达式 var reg = /^#([0-9a-fA-f]{3}|[0-9a-fA-f]{6} ...
- BeautifulSoup 常用方法
#输出所得标签的‘’属性值 获取 head里面的第一个meta的content值 soup.head.meta['content'] 获取第一个span的内容 soup.span.string 获取第 ...
- 父类中“this” 指向问题
“this.字段”如果出现在父类代码中,指的就是父类属性. “this.方法”不管出现在父类还是子类代码中,指的都是子类方法. “this.字段”如果出现在子类代码中,指的就是子类属性. 在程序的时候 ...
- PHP框架学习错误总结
错误一: Fatal error: “Uncaught exception 'Zend_Controller_Response_Exception' with message 'Cannot send ...
- hdu-----(1532)Drainage Ditches(最大流问题)
Drainage Ditches Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others) ...
- OC 类别(分类)Categroy
Categroy类别,又称为扩展类,在类的原基础上扩展方法,且不可添加变量,如果扩展的方法与原始类中的方法相同,则会隐藏原始方法,且不可在扩展方法中通过super调用原始方法,这里与继承不同. 定义: ...
- SQL批量删除与批量插入
批量删除: DELETE FROM MyTable WHERE ID IN (1,2); 批量插入: INSERT INTO MyTable(ID,NAME) VALUES(1,'123');INSE ...
- PHP获取指定时间的上个月
主要用strtotime()这个函数 php 获得前一个月的月份 date("Y-m-d",strtotime("last month")); php获得给定时 ...
- 25个有用和方便的 WordPress 速查手册
如果你是一个 WordPress 编码器或开发人员,下载一些方便的 WordPress 备忘单寻找你的工作然后你在正确的地方.我们已经列出了25个有用的和方便的 WordPress 速查手册.Word ...