初学swift 。因为工作需要 接下来要学习一门新语言 swift。
1.变量与常量
变量声明:
var 定义变量 let 定义常量;
一方面 swift 是一个类型安全的语言(java)。另一方面 在定义的时候,不需要指明类型(js)。当然 跟js不同的是。他会根据右边的值推断类型。它仍然是安全的。
var x = 1;
x = “xxx”//这样会报错 因为推断类型是 int。不能复制成 string了。
不同类型的变量不可以相加。更加不会自动转换类型。 即使是 int32 与 int8 之间 也不可以直接相加。
元组:
元组是几个不同类型数据的集合体。用 ()来组成一个整体。 比如("张三",22,"男")这就是 由三个变量组成的一个元组 其中2个string 一个 int。要想获取元组的某一个值需要用内容分解。
var x = ("张三",22,"男");
var (name,age,sex)=x;//其中不需要的可以用_代替就忽略了 比如 var (name,_,sex)
println("name:\(name) , age:\(age) sex:\(age)");
也可以当做数组一样的获取。
println("name:\(x.0) , age:\(x.1) sex:\(x.2)");
元组也可以有一个更符合大家习惯的写法。就是类似json一样var x =(name:"张三",age:22,sex:"男");这样写法的元组 获取方法跟js一样 x.age;
ps:元组的意义可能在于某些方法需要返回多个参数。
可选和可选绑定
var x:Bool = false;
if x {
println("x is true")
}else{
println("x is false")
}
var y:Bool? = false;
if y {
println("y is true")
}else{
println("y is false")
}
上面的程序 输出 是 x is false y is true 因为对于可选变量 if 只是判断是否有值 而不取值。要想取值 需要用 !(这里的! 就好像把 可选变量变成了非可选变量。即使不用! 可选变量也是可以正常用于 运算。除了 if 语句)。
var z:Bool? = false;
if z! {
println("z is true")
}else{
println("z is false")
}
如果上面这样写法 就是 输出 z is false了。
var x:Int?=1;
if var y=x{
println(y);
//y=nil;
}
在上面的例子中 就是一个可选绑定。 意思就是 如果 x 是有值的话。就赋值给y。 需要注意的是 在这里 y将不是可选变量。 如果赋值 nil 会报错。不同于下面的写法
var x:Int?=1;
var y=x
println(y);
y=nil;
隐式解析可选
所谓隐式解析可选 是当一个定义一个可选变量的时候。每次都需要用可选绑定来取值 是在是太低效了。 如果你能够保证每次取值的时候都不是nil。 那么不需要通过!号 来去值。