官方文档学习之《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(一) 写了删删了写,反复几次,对自己的描述很不 ...
随机推荐
- R语言自带数据包
向量 euro #欧元汇率,长度为11,每个元素都有命名 landmasses #48个陆地的面积,每个都有命名 precip #长度为70的命名向量 rivers #北美14 ...
- Jquery 操作Html 控件 CheckBox、Radio、Select 控件 【转】http://www.cnblogs.com/lxblog/archive/2013/01/09/2853056.html
Jquery 操作Html 控件 CheckBox.Radio.Select 控件 在使用 Javascript 编写前台脚本的时候,经常会操作 Html 控件,比如 checkbox.radio ...
- 《精通javascript》几个简单的函数
转载http://www.cnblogs.com/jikey/archive/2011/07/25/2116696.html /** * 隐藏元素 * @param {String} elem */f ...
- div中的字符换行
div中的字符换行 转载自:http://blog.sina.com.cn/s/blog_6a79bc480100tizi.html 1.强制不换行,同时以省略号结尾. <div style ...
- HTML5的 2D SVG和SVG DOM的学习笔记(1)
(项目中要使用SVG,只好补充知识了) HTML体系中,最常用的绘制矢量图的技术是SVG和HTML5新增加的canvas元素.这两种技术都支持绘制矢量图和光栅图. 一.SVG概述 可缩放矢量图形(Sc ...
- 布隆过滤器(Bloom Filter)详解——基于多hash的概率查找思想
转自:http://www.cnblogs.com/haippy/archive/2012/07/13/2590351.html 布隆过滤器[1](Bloom Filter)是由布隆(Burton ...
- Java JDK 动态代理使用及实现原理分析
转载:http://blog.csdn.net/jiankunking 一.什么是代理? 代理是一种常用的设计模式,其目的就是为其他对象提供一个代理以控制对某个对象的访问.代理类负责为委托类预处理 ...
- java网络编程socket解析
转载:http://www.blogjava.net/landon/archive/2013/07/02/401137.html Java网络编程精解笔记2:Socket详解 Socket用法详解 在 ...
- noip知识点总结之--贪心
一.什么是贪心 贪心算法嘛... 就是在对某个问题求解时,总是做出在当前看来是最好的选择 In other wors,并不是从整体最优上加以考虑,而是在获得某种意义上的局部最优解 二.贪心算法的适用前 ...
- div在固定高的文字垂直居中
<div style='display:table; height:100px;'> <div style='display:table-cell; vertical-align: ...