常量和变量
- 用let声明常量
let
m
=
20
- 用var声明变量
var
n
=
1
0
- 类型推导机制
声明常量或变量时。能够不指定常量/变量类型,编译器会依据初始化值自己主动推导类型。也能够显示指定变量类型:
var
str:
String
=
"12345"
var
num:
UInt
=
12
var
i:
Float
=
3.14
数据类型
类型别名
- 能够使用typealiaskeyword定义类型别名。跟C语言的typedef作用类似
typealias
XXInt =
Int
;
//
给
Int
类型去了以个别名
XXInt
运算符
赋值运算符
- 一对一赋值
var
a =
20
var
b =
a
- N对N赋值
let
(x, y) = (
10
,
20
)
- 跟C/OC不一样。Swift赋值运算符没有返回值
- OC
int
a =
10
;
int b = a = 20;
//以上赋值语句正确,
b = 20
Swift
var b =
a =
20;
if
(
a
=
b
) { }
//
以上赋值语句错误。
b
没有值。
()
中的表达式也没有值,能够防止误用=和==
求余运算符
- 求余结果的符号取决于%左边数字的符号(与C/OC一样)
- 能够对浮点数求余
var
z =
8
%
2.5
//0.5
Bool类型
- 在C语言中,0是假。非0是真。在Swift中Bool类型就两种值:
true:真
false:假
- if语句的条件必须是Bool类型
范围运算符
- 范围运算符用来表示一个范围,有2种类型的范围运算符
闭合范围运算符:a…b,表示[a, b],包括a,b
半闭合范围运算符:a..<b,表示[a, b), 包括a,不包括b
for
index
in
0
..<
5
{
print
(index)
}
溢出运算符
每种数据类型都有自己的取值范围,默认情况,一旦赋值一个超出范围的数值,就会产生编译错误或执行时错误。
- Swift为整形计算提供了5个&开头的益处运算符,能够对超出范围的值进行处理。
&+、
&-、
&/、
&*、
&%
上溢出
var
x:
UInt8
=
255
;
var
y =
x
&+
1
//y
的值为
0
下溢出
var
x:
Int8
= -
128
;
var
y =
x
&-
1
//y
的值为127
除0溢出
var
x =
10
;
var
y =
x
&/ 0
//y
的值为
0
var
x =
10
;
var
y =
x
&%
0
//y
的值为
0
元组类型
- 什么是元组类型?
元组类型由N个随意类型的数据组成(N >=0)
组成元组类型的数据称为“元素”
var
point = (x:
10.0
, y:
20.0
)
//point
有两个元素,
x
、
y
是元素名称
let
person = (name:
"Job"
)
//person
仅仅有
name
一个元素
let
data = ()
//
空元组
- 元组的訪问
用元素名称訪问
let
value =
point
.x
//
取值
point
.x =
30.0
//
设值
用元组位置訪问
let
value =
point
.
0
//
取值
point
.
0
=
30.0
//
设值
假设用let修饰一个元组,那么该元组为常量。无法改动元素的值
- 元组的输出
能够直接输出元组来查看全部元素的值
print
(
point
)
- 使用细节
能够省略元素名称
var
point = (
10.0
,
20.0
)
let
person = (
20
,
"Job"
)
能够显式指定元素的类型
let
person:(
UInt8
,
String
) = (
20
,
"Job"
)
peson的第一个元素仅仅能是UInt类型。第二个元素仅仅能是String类型
在显示指定元素类型的情况,不能加入元素名称,以下的语句是错误的
let
person:(
UInt8
,
String
) = (age:
20
, name:
"Job"
)
能够用多个变量接收元组数据
var
(x, y) = (
20
,
30
)
//x
是
20
,
y
是
30
var
point = (
x
,
y
)
//point
由两个元素组成,各自是
20
,
30
能够将元素赋给多个变量
var
point = (
20
,
30
)
var
(x, y) =
point
//x
是
20
,
y
是
30
能够用
_(下划线)忽略某个元素的值,仅仅取出其它元素的值
let
person:(
UInt8
,
String
) = (
20
,
"Job"
)
var
(
_
,name) =
person