swift 3. 基本数据类型
2014-06-23 23:23
253 查看
前言:
这一节是蛮重要的基础部分,主要讲解swift的基本数据类型,就像c语言,php语言一样。很重要。我们开始讲。
swift的语言特点和C语言有点像。但是,可以不用写main() 函数,单条语句后面,可以不用分号( ; )。
1.1 用 var 关键字来申明一个变量,格式为: var 变量名 :类型 = 值; 变量是指可以随意改变的量。但是,只能申明定义一次,可以多次改动。
我们看看其他语言中是怎么申明变量的,可以对比一下:
1.2 用 let 申明一个常量,格式为: let 常量名:类型 = 值;常量定义一次,以后不能改变了。也是不能重复多次申明。
同样,我们看其他语言中怎么申明变量的:
1.3 省略变量类型
我们在swift中,其实是可以像php和javascript那样不用申明变量类型的,程序会帮我们自动识别它是什么变量类型,有点弱语言的特点了,这点很赞,所以我们就可以像下来这样只有var 和 let 来申明变量和常量了:
常量与变量名不能包含数学符号,箭头,保留的(或者非法的)Unicode 码位,连线与制表符。也不能以数字开头,但是可以在常量与变量名的其他地方包含数字。
一旦你将常量或者变量声明为确定的类型,你就不能使用相同的名字再次进行声明,或者改变其存储的值的类型。同时,你也不能将常量与变量进行互转。
1. print("qwer"); //直接打印变量,必须用双引号
2. print(12345); //直接打印整形。
3. print("print info is: \(foo)"); // 使用 \(变量名) 这样方式来解析变量,混合打印输出。
1. // 双斜杠,单行注释
2. /* 多行 */ 多行注释
1. 用Int 表示整型,swift 会自动去识别平台,是32位还是64位,会自动装换成对应的平台的长度,
2. 用UInt 表示无符号的整型,同样,也是会自动识别是32位还是64位平台。
1. Double 表示64位浮点数
2. Float 表示32位浮点数
3. 在swift中,Double最少15位数字的精度,Float最少6位数字,可以自己根据业务里判断用哪个。
比如下面的相加运算符就是错误,第三行会报错:
所以我们必须进行转换,要么用Double(soo1) 变成浮点数,要么用Int(soo2)转换成整型。
1. 浮点数转整型 用 Int() 函数
2. 整型转浮点数 用Double() 或者 Float() 函数
3. 转换成字符串 用 String() 函数
元祖的格式类型用()表示: var sed1 = (4054, "Net Error"),就是一个元祖,有2个元素,第一个是整型4054,第二个是字符串。类型是(Int, String)
我们输出元祖的具体值的方式也有很多种,1是用直接元祖的下标。比如:yuanzu.0, yuanzu.1
或者有其他的变量来分解元祖中的值。用: var (y1, y2) = yuanzu 。来输出元祖。和php中的list(y1,y2) = array 一样。遍历数组。
如果只想解析其中的元祖的值,不需要解析的用“_” 来代替。
元祖就像php中的数组一样,上面这种方式 var yuanzu = (123, "ert") 可以说成是索引数组,那么应该还有key=>value关联数组方式,。所以还有一种元祖方式:
同样我们用 http200Status.0 和 http200Status.1 也可以同样打印出 200 和 “ok” 。是不会输出statusCode 和 description 这两个key的
那么我们有变量解析也同样可以达到一样的效果,同样,也是不会输出statusCode 和 description 这两个key的。只会输出具体的值。
assert 就是用来触发断言的函数,全局可用,它有2个参数,第一个是触发条件,为false就会触发,代码运行停止,你的应用被终止。第二个参数是触发时候的dubug信息。
我们来看这个完整的例子:
![](https://img-blog.csdn.net/20140830233752156?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvdGhpbmsybWU=/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center)
我们看左边和下面就是各种信息了。
断言的使用场景:
整数类型的下标索引被传入一个自定义下标脚本实现,但是下标索引值可能太小或者太大。
需要给函数传入一个值,但是非法的值可能导致函数不能正常执行。
一个可选值现在是
这一节是蛮重要的基础部分,主要讲解swift的基本数据类型,就像c语言,php语言一样。很重要。我们开始讲。
swift的语言特点和C语言有点像。但是,可以不用写main() 函数,单条语句后面,可以不用分号( ; )。
1. 变量和常量
php中申明变量很简单,直接 $foo = 123; $foo = 'phper'; $foo = array(1,2,3); 就可以了。不用管申明的是什么数据类型。但是C语言不一样,你申明一个变量,必须要指明申明的变量是什么类型:int foo = 123; int foo[] = {1,2,3}; char foo = "e"; swift 由于是C语言的衍生品,所以也是这样定义的,但是是和 js 很像的风格:1.1 用 var 关键字来申明一个变量,格式为: var 变量名 :类型 = 值; 变量是指可以随意改变的量。但是,只能申明定义一次,可以多次改动。
var foo:Int = 1234 //整型 var foo2:String = "qwer" //字符串 var foo3:[String] = ["Eggs", "Milk"] //数组
我们看看其他语言中是怎么申明变量的,可以对比一下:
//php $foo = 1234; $foo2 = "qwer"; $foo3 = array("Eggs", "Milk"); //c语言 int foo = 1234; char foo2 = "qwer"; char foo3[] = {"Eggs","Milk"}; //javascript var foo = 1234; var foo2 = "qwer"; var foo3 = ["Eggs","Milk"];
1.2 用 let 申明一个常量,格式为: let 常量名:类型 = 值;常量定义一次,以后不能改变了。也是不能重复多次申明。
let con1:Int = 1234 // 整型 let con2:String = "qwer" // 字符串 let con3:[String] = ["Eggs", "Milk"] //数组
同样,我们看其他语言中怎么申明变量的:
//php php定义常量使用define函数 define('CON1', 1234); define('CON2', "qwer"); define('CON3', array("Eggs", "Milk")); //c语言 c语言使用const 定义常量 const int con1 = 1234; const char con2 = "qwer"; const char con3[] = {"Eggs", "Milk"}; //javascript //js无法自定义常量, 你可以使用全局变量代替 var PI=3.14;
1.3 省略变量类型
我们在swift中,其实是可以像php和javascript那样不用申明变量类型的,程序会帮我们自动识别它是什么变量类型,有点弱语言的特点了,这点很赞,所以我们就可以像下来这样只有var 和 let 来申明变量和常量了:
var foo1 = 123 //自动识别为Int型 变量 var foo2 = "qwer" //自动识别为 String型 变量 var foo3 = ["Eggs", "Milk"] //自动识别为数组类型 变量
let foo1 = 123 //自动识别为Int型 常量 let foo2 = "qwert" //自动识别为 String型 常量 let foo3 = ["Eggs", "Milk"] //自动识别为数组类型 常量
2. 常量和变量的命名
变量和常量的命名,比C语言要爽,和PHP一样,你可以用任何你喜欢的字符作为常量和变量名,包括 Unicode 字符:let π = 3.14159 let 你好 = "你好世界"
常量与变量名不能包含数学符号,箭头,保留的(或者非法的)Unicode 码位,连线与制表符。也不能以数字开头,但是可以在常量与变量名的其他地方包含数字。
一旦你将常量或者变量声明为确定的类型,你就不能使用相同的名字再次进行声明,或者改变其存储的值的类型。同时,你也不能将常量与变量进行互转。
3. 输出变量和常量
在c语言中,我们通常使用printf("%d", foo) 这样格式控制输出的方式来打印变量和常量。在swift里,我们用java里常用的print()和 println() 函数来输出任何变量。它更强大和方便。我们一般用println() 打印并换行。1. print("qwer"); //直接打印变量,必须用双引号
2. print(12345); //直接打印整形。
3. print("print info is: \(foo)"); // 使用 \(变量名) 这样方式来解析变量,混合打印输出。
4. 注释
swift中的注释和其他语言一样,主要是这两种,也是主要的两种:1. // 双斜杠,单行注释
2. /* 多行 */ 多行注释
5. 分号
swift中和其他语言一样,每一行的结尾用分号表示结束,但是,也可以不用,并且推荐不用分号(ps. 操,最jb讨厌这种不用分号结束的语言。)。但是,一句单独占一行的时候,可以不用,如果是多行语句占一行,就必须要用分号了。var foo6 = 1234 //单独一句占一行,不用加分号结尾 var foo7 = 567; print(foo7) // 两句在一行,所以中间必须加分号
6. 整型
在c语言中,整型用关键字 Int 表示。 用 long Int,short Int 等。占据4个字节。在swift中,我们也一样。我们也用Int表示整型。1. 用Int 表示整型,swift 会自动去识别平台,是32位还是64位,会自动装换成对应的平台的长度,
2. 用UInt 表示无符号的整型,同样,也是会自动识别是32位还是64位平台。
7. 浮点数
浮点数就是带小数的数字,比如:3.14,-3.23, 0.56 等。和其他语言一样,swift中浮点数分为 单精度Float 和双精度Double1. Double 表示64位浮点数
2. Float 表示32位浮点数
3. 在swift中,Double最少15位数字的精度,Float最少6位数字,可以自己根据业务里判断用哪个。
8. 数值转换
不管里哪门语言,都会涉及到数值字符类型的转换,swift中是不会强制转换的,必须要手动转换,否则会报错。比如下面的相加运算符就是错误,第三行会报错:
var soo1 = 3 var soo2 = 4.56; var soo3 = soo1 + soo2; print(soo3);
所以我们必须进行转换,要么用Double(soo1) 变成浮点数,要么用Int(soo2)转换成整型。
var soo1 = 3 var soo2 = 4.56; var soo3 = Double(soo1) + soo2; //或者 Float() print(soo3); // 输出7.56
var soo1 = 3 var soo2 = 4.56; var soo3 = soo1 + Int(soo2); print(soo3); //输出 7
1. 浮点数转整型 用 Int() 函数
2. 整型转浮点数 用Double() 或者 Float() 函数
3. 转换成字符串 用 String() 函数
9. 布尔值
布尔值bool ,是一个表示真假的值,真用true, 假用falsel 表示。c语言不同 ,没有bool值,真用1,假用0。10. 元祖
元祖这个概念还是第一次听说,说白了就有点类似于C语言中的结构体,就是把一组不同的数据类型的值聚合在一起。不同于数组,数组是把一组数据类型相同的放一起。元祖的格式类型用()表示: var sed1 = (4054, "Net Error"),就是一个元祖,有2个元素,第一个是整型4054,第二个是字符串。类型是(Int, String)
var yuanzu = (123,"ert") print(yuanzu)会在控制台打印:(123, ert)
我们输出元祖的具体值的方式也有很多种,1是用直接元祖的下标。比如:yuanzu.0, yuanzu.1
var yuanzu = (123,"ert") println(yuanzu.0) println(yuanzu.1)会打印出 123 和 ert。
或者有其他的变量来分解元祖中的值。用: var (y1, y2) = yuanzu 。来输出元祖。和php中的list(y1,y2) = array 一样。遍历数组。
var yuanzu = (123,"ert") var (y1, y2) = yuanzu; print(y1) print(y2) //php中如何实现 $num = array(123, "ert"); echo $num[0]; echo $num[1]; list(y1,y2) = $num; echo y1; echo y2;
如果只想解析其中的元祖的值,不需要解析的用“_” 来代替。
var yangyi = (123, "ert", 456) var (a1, _, a2) = yangyi var (a3, a4, _) = yangyi var (a5, _, _) = yangyi print(a1) //输出123 print(a2) //输出456 print(a3) //输出 123 print(a4) //输出ert print(a5) //输出123
元祖就像php中的数组一样,上面这种方式 var yuanzu = (123, "ert") 可以说成是索引数组,那么应该还有key=>value关联数组方式,。所以还有一种元祖方式:
let http200Status = (statusCode: 200, description: "OK") print(http200Status.statusCode) //输出 200 print(http200Status.description) //输出 ok
同样我们用 http200Status.0 和 http200Status.1 也可以同样打印出 200 和 “ok” 。是不会输出statusCode 和 description 这两个key的
let http200Status = (statusCode: 200, description: "OK") print(http200Status.0) //同样输出200 print(http200Status.1) //同样输出 ok
那么我们有变量解析也同样可以达到一样的效果,同样,也是不会输出statusCode 和 description 这两个key的。只会输出具体的值。
let http200Status = (statusCode: 200, description: "OK") var (c1, c2) = http200Status print(c1) //输出 200 print(c2) //输出 ok
11. 断言
断言这个东西,听起来感觉挺玄乎,其实很简单,在其他语言中,比如php中,我们用die() 来断言进行调试。assert(age >= 0, "A person's age cannot be less than zero") // 比如:age = -3 整个结果为falsel了.就会触发
assert 就是用来触发断言的函数,全局可用,它有2个参数,第一个是触发条件,为false就会触发,代码运行停止,你的应用被终止。第二个参数是触发时候的dubug信息。
我们来看这个完整的例子:
我们看左边和下面就是各种信息了。
断言的使用场景:
整数类型的下标索引被传入一个自定义下标脚本实现,但是下标索引值可能太小或者太大。
需要给函数传入一个值,但是非法的值可能导致函数不能正常执行。
一个可选值现在是
nil,但是后面的代码运行需要一个非
nil值。
相关文章推荐
- Swift_1_基本数据类型
- swift基本数据类型
- 苹果公司的新的编程语言 Swift 高级语言()两--基本数据类型
- ios深度解析之Swift(基本数据类型)
- swift 基本数据类型--字符串
- 苹果新的编程语言 Swift 语言进阶(二)--基本数据类型
- swift基本知识、数据类型、运算符、元组类型
- Swift基本使用-数据类型(一)
- Swift 学习笔记一 基本数据类型和简单语句语法
- swift 2.0 基本数据类型 强转类型
- Swift--基本数据类型(二)
- Swift--基本数据类型(一)
- swift入门基础知识1基本数据类型
- 苹果新的编程语言 Swift 语言进阶(二)--基本数据类型
- 窥探Swift之基本数据类型
- Swift基本数据类型
- swift基本数据类型及语法
- 第3篇:swift语言笔记:基本语法/运算符/数据类型/字符串等关键点
- Swift - 基本数据类型,及常/变量声明
- swift -基本数据类型的定义与使用