之前学习过一段时间swift,由于目前开发的项目还是用的OC,一段时间不看swift又基本忘干净了,好记性不如烂笔头,还是用博客记录一下自己学的东西吧。

基本数据类型:

1.常量(let)和变量(var):

常量用 let 修饰,如 let age = 18 ;let name = "pig" 。

作用:在使用let初始化赋值以后,则不能更改。

变量用var 修饰,如 var age = 18   age = 19

作用:使用var定义的变量,在后续可以多次修改,如上 我们定义了一个变量age,赋值为18,后面我们还可以将它改为19。

2.类型标注和类型推断

2.1 类型标注

我们可以通过以下方式去给一个对象或基本数据标注类型:

let age : Int = 1  (定义一个int类型的常量初始化为1)

var name :String = "lan" (定义一个String类型的变量初始化为 lan )
var like = String()    (定义一个String类型的变量,没有初始值 )

也可以在一行中定义多个同样类型的变量,用逗号分割,并在最后一个变量名之后添加类型标注:

var red, green, blue: Double    //定义变量red ,green,blue 为double类型

2.1 类型推断

如果没有初始值则必须要声明类型,用冒号分割;如果有初始值但没有明确声明对象的类型,则会根据初始化的值自动去推导一个类型如:

let age = 1  (这里会自动推断为age是int类型)

var name = "lan" (这里会自动推断为name是String类型)
var height = 2.11 (这里会自动推断为height是Double类型)注意:如果没有声明类型,浮点数都会被自动推断为Double类型,而不是float类型。

3.值的转换

swift的值永远不会被隐式转换为其他类型,如果需要把一个值转换为其他类型,需要显示转换如:

let number = 1

let count = 2.2

let all = Double(number) + count   //这里必须要把int类型的number转换为double类型 才能相加,否则会报错。

4.可选类型:

使用可选类型(optionals)来处理值可能缺失的情况。可选类型表示:

  • 有值,等于 x

或者

  • 没有值

注意:
C 和 Objective-C 中并没有可选类型这个概念。最接近的是 Objective-C 中的一个特性,一个方法要不返回一个对象要不返回nil,nil表示“缺少一个合法的对象”。然而,这只对对象起作用——对于结构体,基本的 C 类型或者枚举类型不起作用。对于这些类型,Objective-C 方法一般会返回一个特殊值(比如NSNotFound)来暗示值缺失。这种方法假设方法的调用者知道并记得对特殊值进行判断。然而,Swift 的可选类型可以让你暗示任意类型的值缺失,并不需要一个特殊值。Swift 的 nil 和 Objective-C 中的 nil 并不一样。在 Objective-C 中,nil 是一个指向不存在对象的指针。在 Swift 中,nil 不是指针——它是一个确定的值,用来表示值缺失。任何类型的可选状态都可以被设置为 nil,不只是对象类型。

我们可以通过在类型后面加?表示值可能会缺失如:var number:Int? = 1     var name : String? = xiaoming

在取值时,如果确定是有值则可以用!, var name : String? = xiaoming     print(name!)

?? 操作符来提供一个默认值。如果可选值缺失的话,可以使用默认值来代替。如
let nickName:String? = nil
let fullName:String = "111"
let l = nickName ?? fullName

总结Swift与OC的差别:

1.Swift用let和var创造声明一切数据及对象并且可以通过初始化的值来推断出数据类型,OC则必须要在创建对象或者数据时声明一个类型,如 int ,float,NSString,NSArray等。

2.Swift在不同基本类型数据运算时,需要显式的把他们转换成一样的类型才能计算,更加安全。OC在不同类型数据运算会自动的隐式转换完成计算。

3.在 Swift 中,nil 不是指针——它是一个确定的值,用来表示值缺失。任何类型的可选状态都可以被设置为 nil,不只是对象类型。在 Objective-C 中,nil 是一个指向不存在对象的指针。

4.Swift有可选类型的概念,可以处理值缺失时的情况,OC没有这个类型。

5.Switf中的Bool值判断只有true,false,OC的Bool值判断有很多种。如Yes,true,1,>1,object等都可表示为true;0,NO等表示为false,表示方式可以有很多。

6.Swift中有元祖类型,OC没有。

Swift基础学习笔记 一的更多相关文章

  1. Swift基础学习笔记

    1.在学基本语法之前,简单看一下与OC的不同 注释:OC       #pragma marks  视图加载完成 Swift    //MARK: 视图加载完成   //TOOO:设置背景颜色(Xco ...

  2. 【C#编程基础学习笔记】4---Convert类型转换

    2013/7/24 技术qq交流群:JavaDream:251572072  教程下载,在线交流:创梦IT社区:www.credream.com [C#编程基础学习笔记]4---Convert类型转换 ...

  3. 【C#编程基础学习笔记】6---变量的命名

    2013/7/24 技术qq交流群:JavaDream:251572072  教程下载,在线交流:创梦IT社区:www.credream.com [C#编程基础学习笔记]6---变量的命名 ----- ...

  4. 1.C#基础学习笔记3---C#字符串(转义符和内存存储无关)

    技术qq交流群:JavaDream:251572072  教程下载,在线交流:创梦IT社区:www.credream.com ------------------------------------- ...

  5. Swift基础学习

    Swift基础学习  http://c.biancheng.net/cpp/html/2242.html 这个网站最近看了一下,对于基本语法解释概括的相对全面,如同重新练习一遍OC似的,挺全面的,谢谢 ...

  6. Java基础学习笔记总结

    Java基础学习笔记一 Java介绍 Java基础学习笔记二 Java基础语法之变量.数据类型 Java基础学习笔记三 Java基础语法之流程控制语句.循环 Java基础学习笔记四 Java基础语法之 ...

  7. Mysql数据库基础学习笔记

    Mysql数据库基础学习笔记 1.mysql查看当前登录的账户名以及数据库 一.单表查询 1.创建数据库yuzly,创建表fruits 创建表 ) ) ,) NOT NULL,PRIMARY KEY( ...

  8. 0003.5-20180422-自动化第四章-python基础学习笔记--脚本

    0003.5-20180422-自动化第四章-python基础学习笔记--脚本 1-shopping """ v = [ {"name": " ...

  9. Java基础学习笔记(一)

    Java基础学习笔记(一) Hello World 基础代码学习 代码编写基础结构 class :类,一个类即一个java代码,形成一个class文件,写于每个代码的前端(注意无大写字母) XxxYy ...

随机推荐

  1. ajax回调中执行window.open被拦截的解决办法

    From:https://blog.csdn.net/winy_lm/article/details/60959751 ajax async设为false即同步调用 //去支付function got ...

  2. webstorm git 怎么断开版本控制 webstorm git for windows 禁止 自动运行

    也是无语啊,今天装了下最新版本的webstorm ,  发现特别卡,老动不动就卡死, 看了下进程, 牛X 啊,  git for windows 一直蹭蹭蹭的疯狂增长,一开始的一点到后来的庞然大物. ...

  3. 131.007 Unsupervised Learning - Feature Selection | 非监督学习 - 特征选择

    1 Why? Reason1 Knowledge Discovery (about human beings limitaitons) Reason2 Cause of Dimensionality ...

  4. CSS中的line-height

    基本概念 行高.行距 行高是指文本行基线间的垂直距离.那什么是基线呢?记不记得vertical-align属性有个baseline值,这个baseline就是基线. 注意:倒数第二根才是基线(base ...

  5. sql大数据多条件查询索引优化

    此优化的前提可以称之为最近流行的头条人物“许三多”,总数据多,查询条件多,返回列多 优化前分页查询内部select列为需要的全部列,优化后内部select只返回ID主键,外部查询关联原数据表,然后查出 ...

  6. Linux 系统的文件类型

    Linux文件类型常见:普通文件.目录文件.字符设备文件和块设备文件.符号链接文件 1.1. 普通文件(-) ls -lh 来查看某个文件的属性,可以看到有类似-rwxrwxrwx,值得注意的是第一个 ...

  7. December 06th 2016 Week 50th Tuesday

    Behind every beautiful thing, there is some kind of pain. 美丽背后,必有努力. No pains, no gains. But it seem ...

  8. [BZOJ 4555][Tjoi2016&Heoi2016]求和

    题意 给定 $n$ , 求下式的值: $$ f(n)= \sum_{i=0}^n\sum_{j=0}^i\begin{Bmatrix}i\\ j\end{Bmatrix}\times 2^j\time ...

  9. CocoaPods -- ios项目中安装和使用CocoaPods

    CocoaPods是什么? 当你开发iOS应用时,会经常使用到很多第三方开源类库,比如JSONKit,AFNetWorking等等.可能某个类库又用到其他类库,所以要使用它,必须得另外下载其他类库,而 ...

  10. apt安装mysql

    使用 APT 安装 MySQL 参考官方文档 apt-get install mysql-server 这将安装MySQL服务器的包,以及客户端和数据库公共文件的包. 在安装过程中,系统会要求您为ro ...