语法中可以看到oc java c p语言的影子,也借鉴了这些语言的特点
同时具备 编译型语言的高性能和脚本语言的灵活交互性
可以轻松地与c oc混合使用(互相调用)
swift 的源文件的拓展名是。swift
不需要编写main函数
不需要在 每一条语句后面加上分号(注意:如果一行代码山共有多条语句时,需要加上分号)
常量和变量
用let来声明常量
eq:let radius = 10;
用var来声明变量
eq: var age = 20
打印
println(“hello world!”)
字符串的拼接直接用+号
插入直接()
var age = 10
eq:var str = "i have (age)"
数据类
Int Float Double Bool Character String
Array Dictionary 元组类型(Tuple)可选类型(Optional)
数据类型名称首字母都是大写的
定义类型
在常量变量名后面加上冒号(:)和类型名称
let age: Int = 10
上面代码表示:定义了一个Int类型的常量age,初始值是10
一般都是不会明确指定变量和常量的类型的
如果在声明常量,变量时赋了初始值,Swift可以自动推断出这个常量,变量的类型
let age= 10
Swift严格要求比那里在使用之前必须进行初始化、
整数的4种表现形式
十进制数 没有前缀
二进制数 0b前缀
八进制数 0o前缀
十六进制数 0x前缀
浮点数
Double 精度高 64位浮点数 至少15为小数
float 精度低 32为浮点数 至少6位小数
不同精度的类型的数也不能相加
浮点数的表示形式
浮点数可以用十进制和十六进制2种进制来表示
十进制(没有前缀)
没有指数:let d1 = 12.5
有指数:let d2 = 0.125e2
//0.125e2 ==0.125 *10的2次方
十六进制(0x前缀)
0xc.8p0//0xc.8p0 == 0xc.8 *2的0次方
数字可以增加额外的格式,使他们更加容易阅读
可以增加额外的零0
let money = 001999 // 1999
可以增加额外的下划线_,增加可读性
let oneMillion1 = 1_000_000//1000000
增加了额外的0和下划线_,并不会影响原来的数值大小
类型别名(相当于在OC中的typedef)
可以使用typealias关键字定义类型的别名,跟C语言的typedef作业类似
typerlias MyInt = Int
//给Int类型起了一个别名叫做MyInt
原类型名称能在什么地方,别名就能在什么地方用
获得类型的最值
let minValue = MyInt。min
获得类型转换
let num= Myint(3.14)//3
运算符
在OC的基础上增加:
范围运算符:..<、...
赋值:
let(x,y)=(1,2)
跟OC不一样的是:Swift的赋值运算符没有返回值
可以防止误用 = 与==
在Swift中求余可以对小数进行取余
8 % 2.5 = 0.5
BOOL类型
在C语言中:0是假,非0就是真;而在Swift中没有这种概念
Swift中只有对和错 没有01什么的
if语句的结果必须是bool类型只有true和false
三目运算符的条件返回的结果必须是bool的
范围运算符
闭合运算符 a...b 表示[a,b],包含a和b;
半闭合范围运算符:a..<b,表示[a,b)表示包含a,不包含b;
for i in 0..<5
i 从 0到4
溢出运算符
Swfit为整型计算提供了5个&开头的溢出运算符,能对超出取值范围的数值进行灵活的处理
&+ let x = UInt8.max let y = x &+ 1 //y=0
&—
&*
&/ let x = 10 let y = x /0报错let x = 10 let y = x &/0 不会报错 y的值是0
&%
元组类型
元祖类型有N个任意类型的数据组成(N》=0)
组成元祖类型的类型可以成为“元素”
let person = (name :“zhangsan”,x = 10, y = 1.5)
访问 peson.name person.x 也可以 person.1 person.2
元祖的输出
可以省略元素名称 let positong = (10,20)
可以明确指定类型 let person (Int,String) = (1,"jack")元素名称和元素类型不能共存
可以使用下划线_忽略某个元素的值,取出其他元素的值
var person = (20,“jack”)
var (_,name) = pernon