swift语言学习体会第一章

这一套博文将根据苹果官方的《The Swift Programming Language》一书学习过程而写,用以记录学习过程中所发现的问题和一些心得体会。

第一章:基础知识

1. 我们用 let 常量,var 声明变量,这里唯一要注意的是当声明的同时要么你同时标注上类型,要么就赋初值依靠Xcode编译器自身类型推断出你声明的量为什么类型。

例:  let elephant : String  //标注为字符串常量

 var lion : String   //标注为字符串变量

 let elephant = "The big animal is elephant."    //编译器通过你给赋的值能推断出elephant这个常量为字符串常量

 var lion = "The animal where the voice from is lion。"  //编译器通过你给赋的值能推断出lion这个变量为字符串变量

// Int、Double、float 等类型自行尝试。

2. 你若想将不同类型常量或变量进行拼接,必须用显式类型转换,\()这种将数字转换成字符的方法只能用在字符串中。

例:var num = 15

       var label = "the apple number is \(num)"

       print(label)

3. 类型别名这个看上去很鸡肋但实际上却很有用的东西简直就是个逗比。举例来说,你需要做一个怀旧收音机,那上面的音量调节式靠旋钮来调的,这时你用UInt来定义音量显然是不合适的因为UInt太大了,而UInt16却正合适,可是你在程序中写UInt16谁看了你的代码能知道这代表啥呢?过几天自己也懵了,所以类型别名typealais这家伙出现了。

例:typealais AudioVolume = UInt16

       var radioVolume:AudioVolume    //这样收音机的声音就成为了UInt16类型

4. swift语言里布尔值只有true、false两个表示,用0和1表示是错误的,这不同于嵌入式开发中的C语言。

5. 元组我认为可以跟数组比对学习,数组就是相同类型数据的组合,那元组不就是元素的组合么?既然是元素那就可以是不同类型的,所以说元组是任意类型数据的组合。

数组用方括号,元组用小括号这也是区别之一。还有就是数组元素没有名字,通过下标访问,而元组内的元素可以给赋予名字。但是你若想给数组元素赋名字,那么这就不叫数组了,而叫字典,而赋的名字也有专用名称叫做key。举个数组例子再举个元组例子和字典例子,对比学习。

var studentsName = ["lili","meimei","lylei"]    //一个可变数组

var theList = ("mi",13,"you",28)    //一个可变元组

//我么来把上面的元组赋上名字试试

var theList = (food : "mi" , foodnum : 13 , food2 : "you" , food2num : 28) 

//再定义一个字典

var city = [ "BJ" : "beijing" , "HZ" : "hangzhou" , "HK" : "honking"]  //这就像一个带名字的数组一样。也可以声明的时候写清楚为字典类型 var city : Dictionary<String : String> =[ ]

6. 可选类型是啥?我觉着它就是个傻x,但问题是苹果就这么干了,而且看上去还很有用。这要从苹果的值说起,苹果的意思是任何变量不可以为空,就是说一个变量不含任何值这样不行,于是苹果搞了这个一个可选类型,说白了就是为了代表所有可能出现空值的时候有一个值能代替,这样不就永远不可能有空值了么?呵呵,苹果很鸡贼啊!这个可以代表一切空值的家伙就是可选类型了,它的值是nil。而使用它的办法就是在你定义变量的时候在变量类型后面加个问号。

例:var classnumber : Int? = nil    //你依然可以正常操作这个变量,但它什么也没有的时候就等于nil。

7. 下面通过几行简单的代码描述一下什么是强制解析

例:

var classnumber:Int? = nil


classnumber = 123


print(classnumber!)  //该输出结果为123  ,  如果把叹号删除那么输出的结果为Optional(123),Optional类型的值不可以直接参加运算必须得被转成普通类型才可以。


当然了,苹果提供了另一种方法声明可选类型,举例如下

例:var class number:Int! = nil

   class number = 123 

   print(class number)    //这个办法就叫隐式强制解析,上面的方法叫显示强制解析,这部分还是得自己通过代码慢慢琢磨。

补充一点,一直想问可选类型有什么用,也问了很多人,没有一个明确的回答,而我能想到的就是在做出登陆界面的时候,密码框是空的,那这个时候是不是它里面的值类型就应该是可选类型呢?  留给以后思考吧。

















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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值