官方文档学习之《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(一) 写了删删了写,反复几次,对自己的描述很不 ...
随机推荐
- NOR FLASH与NAND FLASH的区别
NOR和NAND是现在市场上两种主要的非易失闪存技术.Intel于1988年首先开发出NOR flash技术,彻底改变了原先由EPROM和EEPROM一统天下的局面.紧接着,1989年,东芝公司发表了 ...
- TortoiseGit GitHub 使用指南
TortoiseGit GitHub 使用指南 这个文档讲的还是比较清楚和完整的.需要注意的一点是ssh的方式,取gitHub的URL的时候选取ssh方式. http://www.360doc.co ...
- 《Play for Java》学习笔记(六)文件上传file upload
一. Play中标准方法 使用表单form和multipart/form-data的content-type类型. 1.Form @form(action = routes.Application.u ...
- JDE函数--获取当前登录人的描述
业务描述:当前登录人ID为数字,中文姓名保存在描述1字段中 方式: 根据系统变量获取用户的地址号,根据TableIO获取用户描述1.如下图所示: 由于使用AN8时,变量类型不一致,所以使用函数将cha ...
- Google Chrome 源码下载地址 (Google Chrome Source Code Download)
1. Google Chrome 源码 SVN 地址:http://src.chromium.org/svn.包含有 Chrome.Gears.Webkit.GCC 等源码以及编译依赖工具.Chrom ...
- PDF 补丁丁 0.4.1.839 测试版发布:调整页面留白
新的测试版的补丁功能实现了调节页面留白的功能(之前的820版尚未实现该功能),页面合并功能支持从资源管理器拖放文件或目录到列表,还修正了一些问题. 欢迎下载测试.
- sqlserver 2008 左补齐字符串
SQLServer:right函数 语法 Right(string, length) Right 函数的语法具有下面的命名参数: 部分 说明 string 必要参数.字符串表达式,从中最右边的 ...
- web开发-前端到服务器Controller中的数据传递
一, ajax方式 1. ajax获取页面中的数据,包括表单中的数据, 然后封装成对象,数组, 字符串, 或其他基本类型的数据. 2. 将封装得到的数据通过ajax传递到controller中(注:在 ...
- java软件设计的三层结构
接口: package dao; public interface Dao { String getData(); } package biz; import dao.Dao; public inte ...
- excel的变量
因需要定制游戏的公式,公式是以一个系数乘以等级,我想达到修改系数,每个等级对应的值就立即显示出来, 但把系数写在一个单元格,一拉,系数单元格也会跟着增长行数--不是我想要的: 但只要把系数单元格改成变 ...