swift 1

初学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=x
println(y);
y=nil;

隐式解析可选

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

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值