Swift基础学习笔记 一
之前学习过一段时间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基础学习笔记 一的更多相关文章
- Swift基础学习笔记
1.在学基本语法之前,简单看一下与OC的不同 注释:OC #pragma marks 视图加载完成 Swift //MARK: 视图加载完成 //TOOO:设置背景颜色(Xco ...
- 【C#编程基础学习笔记】4---Convert类型转换
2013/7/24 技术qq交流群:JavaDream:251572072 教程下载,在线交流:创梦IT社区:www.credream.com [C#编程基础学习笔记]4---Convert类型转换 ...
- 【C#编程基础学习笔记】6---变量的命名
2013/7/24 技术qq交流群:JavaDream:251572072 教程下载,在线交流:创梦IT社区:www.credream.com [C#编程基础学习笔记]6---变量的命名 ----- ...
- 1.C#基础学习笔记3---C#字符串(转义符和内存存储无关)
技术qq交流群:JavaDream:251572072 教程下载,在线交流:创梦IT社区:www.credream.com ------------------------------------- ...
- Swift基础学习
Swift基础学习 http://c.biancheng.net/cpp/html/2242.html 这个网站最近看了一下,对于基本语法解释概括的相对全面,如同重新练习一遍OC似的,挺全面的,谢谢 ...
- Java基础学习笔记总结
Java基础学习笔记一 Java介绍 Java基础学习笔记二 Java基础语法之变量.数据类型 Java基础学习笔记三 Java基础语法之流程控制语句.循环 Java基础学习笔记四 Java基础语法之 ...
- Mysql数据库基础学习笔记
Mysql数据库基础学习笔记 1.mysql查看当前登录的账户名以及数据库 一.单表查询 1.创建数据库yuzly,创建表fruits 创建表 ) ) ,) NOT NULL,PRIMARY KEY( ...
- 0003.5-20180422-自动化第四章-python基础学习笔记--脚本
0003.5-20180422-自动化第四章-python基础学习笔记--脚本 1-shopping """ v = [ {"name": " ...
- Java基础学习笔记(一)
Java基础学习笔记(一) Hello World 基础代码学习 代码编写基础结构 class :类,一个类即一个java代码,形成一个class文件,写于每个代码的前端(注意无大写字母) XxxYy ...
随机推荐
- Java学习笔记(3)----网络套接字服务器多线程版本
本例给出一个客户端程序和一个服务器程序.客户端向服务器发送数据.服务器接收数据,并用它来生成一个结果,然后将这个结果返回给客户端.客户端在控制台上显示结果.在本例中,客户端发送的数据是圆的半径,服务器 ...
- FineReport移动端如何获取地址位置
对于企业大多数员工来说,由于其工作位置是固定的,可以有多种方式进行上班打卡签到以保证该员工有按时正常来上班,但是对于经常需要出差,去客户现场的员工来说,就无法保证他们是否有去上班,所以希望能通过手机位 ...
- 关于eclipse连接外置android模拟器
1.win+R,输入cmd,打开命令提示符 2.cd D:\Java(安卓应用开发)\adt-bundle-windows-64\sdk\platform-toolsadb connect 127.0 ...
- C语言中关键词static的用法与作用域
一.面向过程设计中的static 转载:http://blog.csdn.net/celerylxq/article/details/6160499 1.静态全局变量 在全局变量前,加上关键字stat ...
- GitHub初步探索-1-使用本地代码管理工具,简化上传的过程
使用GitHub对于我们写Java的同志们来说是一个非常好的代码存储的方式,但是因为是全英文的,操作起来有一点复杂,所以我不是经常使用 ,但是最近代码越敲越多,再加上老师要求,希望使用比较简单的方法来 ...
- pmp证书
- FileWriter与BufferedWriter的适用场景
IO这块,各种Writer,Reader,让人眼晕 而在网上基本找不到在什么时候用哪个类,并且网上的IO demo 很多用法都是错的 在这简单的分析一下FileWriter与BufferedWrite ...
- python基础语法1
一.基础语法 1.常量 python语言没有真正的常量,它只是字面常量. 2.变量 变量是一个指针,它指向一块内存. 变量的命名规则: 1)只能包含字母.数字和下划线: 2)只能以字母或者下划线开始: ...
- December 23rd 2016 Week 52nd Friday
Life is a horse, and either you ride it or it rides you. 人生像一匹马,你不驾驭它,它便驾驭你. It is the same meaning ...
- Chapter 5 Order Inversion Pattern
5.1 Introdution The main focus of this chapter is to discuss the order inversion (OI) pattern, which ...