官方文档学习之《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(一) 写了删删了写,反复几次,对自己的描述很不 ...
随机推荐
- robotframework笔记4
机器人框架概述 机器人框架是一个通用的开源的自动化测试框架 验收测试和验收测试驱动开发(ATDD).它具有易于使用的表格的测试数据 语法采用关键字驱动 测试方法.其检测能力可以通过测试库 用Pyt ...
- [JavaScript] 函数同名问题
存在同名函数时,最后的函数会覆盖掉以前的同名函数. var x = 1, y = z = 0; function add(n) { return n = n + 1; } y = add(x); fu ...
- python实现微信打飞机游戏
环境:Ubuntu 16.04 LTS Python 2.7.11 + Pygame + Pycharm 代码: # -*- coding: UTF-8 -*- import pygame, ran ...
- Qt之QCustomPlot(图形库)
简述 QCustomPlot是一个基于Qt C++的图形库,用于绘制和数据可视化 - 制作漂亮的2D图 - 曲线图.趋势图.坐标图.柱状图等,并为实时可视化应用程序提供高性能服务.它没有进一步的依赖关 ...
- ubuntu14.04LS中安装SSH
我只能说: 蛋疼了 因为 1.曾经12.04和13.10的源已经不能使用了(PS毕竟支持的时间到了) 2网上有好多说是更新源的 , 打开etc/...文件 ,然后粘贴一下他们给的源的地址 或许有些是可 ...
- hdu----(5056)Boring count(贪心)
Boring count Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)Tota ...
- WebForm MapPageRoute 路由配置(转载)
使用场景是:MVC 混合使用 WebForm,然后对 WebForm 进行路由配置 http://www.cnblogs.com/xishuai/archive/2015/02/26/web-form ...
- 去除DataTable重复数据的三种方法
业务需求 最近做一个把源数据库的数据批次导出到目标数据库.源数据库是采集程序采集而来的原始数据库,所以需要对其进行一些处理(过滤一些为空,长度太短或太长,非法字符,重复数据)然后在进行入库. 其中要避 ...
- java集合——Collection接口
Collection是Set,List接口的父类接口,用于存储集合类型的数据. 2.方法 int size():返回集合的长度 void clear():清除集合里的所有元素,将集合长度变为0 Ite ...
- Sumblime Text2安装Package Control两种方法+安装插件+注册码
刚开始不认识sumblime的时候,就直接在网上下载了一个最新版的sumblime text3,只是在配合使用go语言时,出现了一些不为自己知道的奇葩问题,于是果断把3卸载了,改成了sumblime ...