前言:
这一节是蛮重要的基础部分,主要讲解swift的基本数据类型,就像c语言,php语言一样。很重要。我们开始讲。
swift的语言特点和C语言有点像。但是,可以不用写main() 函数,单条语句后面,可以不用分号( ; )。
var foo:Int = 1234 //整型 var foo2:String = "qwer" //字符串 var foo3:[String] = ["Eggs", "Milk"] //数组
//php $foo = 1234; $foo2 = "qwer"; $foo3 = array("Eggs", "Milk"); //c语言 int foo = 1234; char foo2 = "qwer"; char foo3[] = {"Eggs","Milk"}; //javascript var foo = 1234; var foo2 = "qwer"; var foo3 = ["Eggs","Milk"];
1.2 用 let 申明一个常量,格式为: let 常量名:类型 = 值;常量定义一次,以后不能改变了。也是不能重复多次申明。
let con1:Int = 1234 // 整型 let con2:String = "qwer" // 字符串 let con3:[String] = ["Eggs", "Milk"] //数组
//php php定义常量使用define函数 define('CON1', 1234); define('CON2', "qwer"); define('CON3', array("Eggs", "Milk")); //c语言 c语言使用const 定义常量 const int con1 = 1234; const char con2 = "qwer"; const char con3[] = {"Eggs", "Milk"}; //javascript //js无法自定义常量, 你可以使用全局变量代替 var PI=3.14;
var foo1 = 123 //自动识别为Int型 变量 var foo2 = "qwer" //自动识别为 String型 变量 var foo3 = ["Eggs", "Milk"] //自动识别为数组类型 变量
let foo1 = 123 //自动识别为Int型 常量 let foo2 = "qwert" //自动识别为 String型 常量 let foo3 = ["Eggs", "Milk"] //自动识别为数组类型 常量
let π = 3.14159 let 你好 = "你好世界"
常量与变量名不能包含数学符号,箭头,保留的(或者非法的)Unicode 码位,连线与制表符。也不能以数字开头,但是可以在常量与变量名的其他地方包含数字。
一旦你将常量或者变量声明为确定的类型,你就不能使用相同的名字再次进行声明,或者改变其存储的值的类型。同时,你也不能将常量与变量进行互转。
在c语言中,我们通常使用printf("%d", foo) 这样格式控制输出的方式来打印变量和常量。在swift里,我们用java里常用的print()和 println() 函数来输出任何变量。它更强大和方便。我们一般用println() 打印并换行。
1. println("qwer"); //直接打印变量,必须用双引号
2. println(12345); //直接打印整形。
3. println("print info is: \(foo)"); // 使用 \(变量名) 这样方式来解析变量,混合打印输出。
var foo6 = 1234 //单独一句占一行,不用加分号结尾 var foo7 = 567; println(foo7) // 两句在一行,所以中间必须加分号
浮点数就是带小数的数字,比如:3.14,-3.23, 0.56 等。和其他语言一样,swift中浮点数分为 单精度Float 和双精度Double
1. Double 表示64位浮点数
2. Float 表示32位浮点数
3. 在swift中,Double最少15位数字的精度,Float最少6位数字,可以自己根据业务里判断用哪个。
var soo1 = 3 var soo2 = 4.56; var soo3 = soo1 + soo2; println(soo3);
var soo1 = 3 var soo2 = 4.56; var soo3 = Double(soo1) + soo2; //或者 Float() println(soo3); // 输出7.56
var soo1 = 3 var soo2 = 4.56; var soo3 = soo1 + Int(soo2); println(soo3); //输出 7
var yuanzu = (123,"ert") println(yuanzu)会在控制台打印: (123, ert)
var yuanzu = (123,"ert") println(yuanzu.0) println(yuanzu.1)会打印出 123 和 ert。
var yuanzu = (123,"ert") var (y1, y2) = yuanzu; println(y1) println(y2) //php中如何实现 $num = array(123, "ert"); echo $num[0]; echo $num[1]; list(y1,y2) = $num; echo y1; echo y2;
var yangyi = (123, "ert", 456) var (a1, _, a2) = yangyi var (a3, a4, _) = yangyi var (a5, _, _) = yangyi println(a1) //输出123 println(a2) //输出456 println(a3) //输出 123 println(a4) //输出ert println(a5) //输出123
let http200Status = (statusCode: 200, description: "OK") println(http200Status.statusCode) //输出 200 println(http200Status.description) //输出 ok
let http200Status = (statusCode: 200, description: "OK") println(http200Status.0) //同样输出200 println(http200Status.1) //同样输出 ok
let http200Status = (statusCode: 200, description: "OK") var (c1, c2) = http200Status println(c1) //输出 200 println(c2) //输出 ok
我们尝试把字符串string1转换成整型int,string1 虽然全部是数字,但是也可能会出错,所以就出现了这个可选类型。我们输出结果就是Optional Int 类型。var string1 = "1234"
var int2 = string1.toInt()
println(int2)
Optional(1234)
Program ended with exit code: 0
我们可以看到输出的是nil 空类型。var string1 = "stirng"
var int2 = string1.toInt()
println(int2)
nil
Program ended with exit code: 0
var string1 = "1234"
var int2 = string1.toInt()
if int2 { //这一行直接报错
println(123)
} else {
println(456)
}
assert(age >= 0, "A person's age cannot be less than zero") // 比如:age = -3 整个结果为falsel了.就会触发
assert 就是用来触发断言的函数,全局可用,它有2个参数,第一个是触发条件,为false就会触发,代码运行停止,你的应用被终止。第二个参数是触发时候的dubug信息。
nil
,但是后面的代码运行需要一个非nil
值。