Swift初步入门学习笔记

参考学习文档来自链接

1. 基础内容

常量和变量

常量用let声明,变量用var。具体类型并非写在开头,而是根据初始值自动识别或者: 类型指定。

//let和var指定常量和变量
let constnum = 1
var varnum = 2
//不赋初始值指定类型
let a : String
a = "abc"
var b : String
b = "bbb"

输出和注释

print()即可输出,自动加换行。如果不想要换行需要在参数里面添加“”。(这里涉及到函数的默认形式参数值,请看函数内容)

print("abc")  
//输出:abc换行
print("abc","")
//输出:abc

注释跟C语言一样,//、/**/。

分号

不同于java和C,swift不强制要求每行结束要加分号;。加也行,不加也行。当然多行代码写成一行代码的话,还是要加分号的。

数据类型

声明一个数据类型:

var a : Bool

Int:有符号整数类,会根据平台自动调整长度,假设64位的数到了32位平台,范围会自动缩减到32位。

UInt:五符号整数类。

Int32:32位有符号整数类。

Double:15位精度的浮点数

Float:6位精度的浮点数

Bool:布尔类型

Character:字符类型

String:字符串类型

Int8存储范围就是-2^7~2^7-1

调用min会获得范围最小值,如Int.min;max同理。

另外,浮点数的十六进制有个p符号,表示2的几次方,如:0xC.3p0表示十六进制的C.3要乘以2^0。

浮点数的十进制有个e符号,表示10的几次方,如3.1e3表示3.1要乘以10^3。参考文章

在数字添加_或者前导0不会影响数字,如:1_0_0和100等价、010和10等价。

整数和浮点数的转换:

Int(Double d)可以将一个Double转成Int,Double(Int i)可以将一个Int转成Double。

元组

小型的结构体。

var a = (1,1,"abc");
print("one is \(a.0),two is \(a.1)")
var b = (a:1,c:2)
print("one is \(a)")

如上代码,声明了一个元组后可以通过\()引用他们中的元素。

可选项

swift的普通变量是不允许为nil的。

由于var和let的存在,当内容可能为某一个确定类型或者nil(相当于Null)时,这个var/let变量就是可选项类型。

可选项表示要么是这个基本类型的值,要么是nil。

比如:

var a = Int("123")

这里如果字符串不是“123”而是wer这样无法转成功的,a就是nil;但是这里123又能转成功,对于a而言它不知道能不能转成功,所以a就是Int?类型,即Optional<Int>类型。(我有点疑惑,转不成功直接抛出错误不就好了,搞啥可选项?)

一个可选项可以通过变量!得到它的不为nil的值:

var a : Int? = nil
a = 123
print("\(a!)")
//输出: 123

但是确保可选项是有值的,如果没有a=123,那么print(“(a!)”)将会报错。

断言和先决条件

断言:assert(条件,条件为false时输出的字符串),断言只会在debug模式下运行,也就是说debug完了构建到生产环境完全不影响性能,因此可以随意添加。assertFailure(字符串)直接失败输出字符串,程序会挂掉,这适用于已经用代码If语句判断了的情况。

先决条件:跟断言使用方式一样,precondition(条件,条件为false时输出的字符串),区别在于precondition在debug和release环境都成立。失败输出字符串程序也会挂掉。preconditionFailure(字符串)同assertFailure(字符串)。

两者都是用于判断某个情况是否成立以便继续执行代码,从而检查出代码Bug的。

2. 运算符

合并空值运算符

(a ?? b) 等效于 (a != nil ? a! : b)。a是可选项,b类型应当同a的存储类型一样。

区间运算符

… 可以用于各种区间,如: 1…2表示1到2,包括1和2; 1…<2表示1到2,不包括2;…2表示开始到2,包括2;…<2开始到2,不包括2。

应用有:

for index in names[1...<2]{
   print("\(index) is \(names[index])")
}

注意只有数组下标是从0开始,如果你直接用let a = …2,将表示a是从负无穷到2的区间,不会报错但是不能遍历该区间,因为是无穷的。

显式括号

3. 字符串和字符

let a = "abc";
//多行字符串字面量
let b = """
	this is a aaaaa.
	""";
//多行字符串里面用\做换行
let c = """
	this is a aaaaa.\
	this is not a aaaaa.
	""";

字符串是值类型,也就是值拷贝而不是引用传递,意味着当你从别的函数里获得该字符串时,你就完全拥有了这个字符串,可以随意更改不怕影响到别人。

4. 异常处理

相关文章

软件简介:蓝湖辅助工具,减少移动端开发中控件属性的复制和粘...
现实生活中,我们听到的声音都是时间连续的,我们称为这种信...
前言最近在B站上看到一个漂亮的仙女姐姐跳舞视频,循环看了亿...
【Android App】实战项目之仿抖音的短视频分享App(附源码和...
前言这一篇博客应该是我花时间最多的一次了,从2022年1月底至...
因为我既对接过session、cookie,也对接过JWT,今年因为工作...