Swift学习笔记(1):基础部分
目录:
- 分号
- 常量和变量
- 数据类型
- 数值型类型转换
- 类型别名
- 元组
- 可选类型
- API版本检查
分号
Swift并不强制要求你在每条语句的结尾处使用分号( ; ),你也可以按照自己的习惯添加分号。如果在一行内写多条独立的语句情况下必须要用分号。
常量和变量
使用let定义常量,使用var定义变量,常量和变量必须在使用前声明,且可以使用Unicode字符声明:不能包含数学符号,箭头,保留的(或者非法的)Unicode 码位,连线与制表符。也不能以数字开头,但是可以在常量与变量名的其他地方包含数字。
let maximumNumberOfLoginAttempts =
var currentLoginAttempt = 0
let constWelcomeMessage: String // 类型标注
var varWelcomeMessage: String // 类型标注
let 你好 = "你好世界" // Unicode字符声明常量
let ?? = "dogcow" // Unicode字符声明常量
你可以在一行中声明多个常量或者多个变量,用逗号隔开:
var x = 0.0, y = 0.0, z = 0.0
var red, green, blue: Double // 类型标注
数据类型
Swift包含基础数据类型:
Int, Int8, Int16, Int32, Int64, UInt, UInt8, UInt16, UInt32, UInt64 : 整型值
Float : 表示32位浮点数
Double : 表示64位浮点数, 当执行类型推断而推断浮点数的类型时,Swift总是会选择Double而不是Float
Bool : 布尔型值
String : 文本型值
Character : 字符型值
Swift提供集合数据类型:
Array : 数组类型
Set : 集合类型
Dictionary : 字典类型
Swift中所有的基本类型:整数、浮点数、布尔值、字符串、数组和字典,都是值类型,并且在底层都是以结构体的形式所实现。
数值型类型转换
Int8和Int16是不同的两种类型,在转换时必须使用类型强制转换
// 整数类型转换
let twoThousand: UInt16 =
let one: UInt8 =
let twoThousandAndOne = twoThousand + UInt16(one)
// 整数和浮点数间转换
let three =
let pointOneFourOneFiveNine = 0.14159
let pi = Double(three) + pointOneFourOneFiveNine // 加号两边的数类型须相同
类型别名
可以使用 typealias 关键字来定义类型别名
typealias AudioSample = UInt16
var maxAmplitudeFound = AudioSample.min // maxAmplitudeFound = 0
元组
把多个值组合成一个复合值。元组内的值可以是任意类型,并不要求是相同类型
let http404Error = (, "Not Found") // http404Error 的类型是 (Int, String)
let http200Status = (statusCode: , description: "OK") // 定义元组元素
let (statusCode, statusMessage) = http404Error // 分解元组获取元素值
let (justTheStatusCode, _) = http404Error // 忽略缺省值
可选类型
可以使用?定义可选类型变量或常量
var surveyAnswer: String? // surveyAnswer 被自动设置为 nil
var serverResponseCode: Int? =
let possibleString: String? = "An optional string."
let forcedString: String = possibleString! // 需要感叹号来获取值
如果一个可选类型变量或常量第一次被赋值之后,能够确定总会有值时,可以使用!定义隐式解析可选类型的变量或常量
let assumedString: String! = "An implicitly unwrapped optional string."
let implicitString: String = assumedString // 不需要感叹号
API版本检查
if #available(iOS , macOS 10.12, *) {
// 在 iOS 使用 iOS 10 的 API, 在 macOS 使用 macOS 10.12 的 API
} else {
// 使用先前版本的 iOS 和 macOS 的 API
}
声明:该系列内容均来自网络或电子书籍,只做学习总结!
Swift学习笔记(1):基础部分的更多相关文章
- swift学习笔记1——基础部分
之前学习swift时的个人笔记,根据github:the-swift-programming-language-in-chinese学习.总结,将重要的内容提取,加以理解后整理为学习笔记,方便以后查询 ...
- 【swift学习笔记】二.页面转跳数据回传
上一篇我们介绍了页面转跳:[swift学习笔记]一.页面转跳的条件判断和传值 这一篇说一下如何把数据回传回父页面,如下图所示,这个例子很简单,只是把传过去的数据加上了"回传"两个字 ...
- Swift学习笔记(一)搭配环境以及代码运行成功
原文:Swift学习笔记(一)搭配环境以及代码运行成功 1.Swift是啥? 百度去!度娘告诉你它是苹果最新推出的编程语言,比c,c++,objc要高效简单.能够开发ios,mac相关的app哦!是苹 ...
- MyBatis:学习笔记(1)——基础知识
MyBatis:学习笔记(1)--基础知识 引入MyBatis JDBC编程的问题及解决设想 ☐ 数据库连接使用时创建,不使用时就释放,频繁开启和关闭,造成数据库资源浪费,影响数据库性能. ☐ 使用数 ...
- bootstrap学习笔记之基础导航条 http://www.imooc.com/code/3111
基础导航条 在Bootstrap框中,导航条和导航从外观上差别不是太多,但在实际使用中导航条要比导航复杂得多.我们先来看导航条中最基础的一个--基础导航条. 使用方法: 在制作一个基础导航条时,主要分 ...
- Django学习笔记(基础篇)
Django学习笔记(基础篇):http://www.cnblogs.com/wupeiqi/articles/5237704.html
- C#学习笔记(基础知识回顾)之值类型与引用类型转换(装箱和拆箱)
一:值类型和引用类型的含义参考前一篇文章 C#学习笔记(基础知识回顾)之值类型和引用类型 1.1,C#数据类型分为在栈上分配内存的值类型和在托管堆上分配内存的引用类型.如果int只不过是栈上的一个4字 ...
- C#学习笔记(基础知识回顾)之值传递和引用传递
一:要了解值传递和引用传递,先要知道这两种类型含义,可以参考上一篇 C#学习笔记(基础知识回顾)之值类型和引用类型 二:给方法传递参数分为值传递和引用传递. 2.1在变量通过引用传递给方法时,被调用的 ...
- C#学习笔记(基础知识回顾)之值类型和引用类型
一:C#把数据类型分为值类型和引用类型 1.1:从概念上来看,其区别是值类型直接存储值,而引用类型存储对值的引用. 1.2:这两种类型在内存的不同地方,值类型存储在堆栈中,而引用类型存储在托管对上.存 ...
- MAVEN学习笔记之基础(1)
MAVEN学习笔记之基础(1) 0.0 maven文件结构 pom.xml src main java package resource test java package resource targ ...
随机推荐
- CF 567C(Geometric Progression-map)
C. Geometric Progression time limit per test 1 second memory limit per test 256 megabytes input stan ...
- 2 怎样解析XML文件或字符串
1 引用XML文件 2 使用XMLReader解析文本字符串 3 使用XMLReader方法读取XML数据 详细代码实现例如以下: //初始化一个XML字符串 String xmlString = @ ...
- CF 447B(DZY Loves Strings-贪心)
B. DZY Loves Strings time limit per test 1 second memory limit per test 256 megabytes input standard ...
- 使用Networkx进行图的相关计算——黑产集团挖掘,我靠,可以做dns ddos慢速攻击检测啊
# -*- coding: utf-8 -*- import networkx as nx import matplotlib.pyplot as plt iplist={} goodiplist={ ...
- 【linux】——centos 分辨率配置
用过centos的朋友肯定知道centos在默认安装的时候显示器的分辨率只有800*600,但是我们想把改成1024*768或者更大,怎么办呢,我也是试过了才知道,首先打开系统-管理-显示-硬件-显示 ...
- angular4过滤器
Angular4中过滤器 一.大小写转换过滤器 uppercase将字符串转换为大写 lowercase将字符串转换为小写 <p>将字符串转换为大写{{str | uppercase}}& ...
- 网线直连Window和Ubuntu
找根网线直接连接两台电脑. 然后设置对应的网络到相同的网关和Mask下面. 检测能否ping通就可以直连了. Ubuntu设置网络后可在IP设置界面里设置Route, 选择直连网线仅用于连接 ...
- Storm Spout
本文主要介绍了Storm Spout,并以KafkaSpout为例,进行了说明. 概念 数据源(Spout)是拓扑中数据流的来源.一般 Spout 会从一个外部的数据源读取元组然后将他们发送到拓扑中. ...
- Android ViewPager+属性动画 实现炫酷视差动画效果
ViewPager有一个setPageTransform()方法可以实现很多酷炫的动画效果 先来个仿QQ的侧滑面板效果 vp.setPageTransformer(true, new PageTran ...
- 关于 jsp java servlet 中文汉字乱码的解决方法
在servlet类中的get,post最前面加上 req.setCharacterEncoding("UTF-8"); resp.setCharacterEncoding(&quo ...