swift 1

来源:互联网 发布:淘宝发货清单模板下载 编辑:程序博客网 时间:2024/05/17 02:23

初学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:元组的意义可能在于某些方法需要返回多个参数。

可选和可选绑定

这里可选的含义可能在以前的语言中没有接触过。在 swift 是任意类型的缺失。 可以理解为null(可能不是一回事 但是感觉很像,区别可能就是 nil 不仅仅是对象。所有类型都可以使nil)。不过需要注意的是。更其他语言不通。只有可选的变量才可以赋值成nil。 可选的写法 是 var :Int? 在变量类型的后面 加上一个问号 就是可选的了。
var x:Int;
x=nil;//这样是会报错的。因为x不是可选的。所以x 必须有值。
可以同过 if 来判断某个可选变量是否有值。通过!来获取这个可选变量的值(如果这个可选变量有值的话。如果没值 会报错。)
ps:这里需要格外注意。对于其他语言的开发者(比如我 以前java)会犯很严重的错误。比如
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=xprintln(y);y=nil;

隐式解析可选

所谓隐式解析可选 是当一个定义一个可选变量的时候。每次都需要用可选绑定来取值 是在是太低效了。 如果你能够保证每次取值的时候都不是nil。 那么不需要通过!号 来去值。 
写法是 定义变量的时候: var x:Int!  用! 代替普通可选的 ?。这样 在使用的时候。 x 就相当于 x!。当然 如果 x 是 nil 那么就会触发运行时报错。

 

0 0
原创粉丝点击