Swift(二,元组,可选类型,类型转化)
一,首先,元组是Swift中特有的,OC中没有元组相关类型,具体怎么用,看下面的例子吧
//1.使用元组来定义一组数据
let infoTuple = ("cjh",,1.8)
let nameTuple = infoTuple.
print(nameTuple)
let count = nameTuple.characters.count //2.1 普通元组的定义方式
let errorMsg = ("error",)
errorMsg.
//2.2 给元组中所有的元素起别名
let errorTuple1 = (error : "error", errorCode : )
errorTuple1.error
errorTuple1.
//2.3 元组的元素别名 就是元组的名称
let (error,errorCode1) = ("error",)
error
errorCode1
//3.元组的运用之一,快速的交换2个数值
var a = 10
var b = 20
(a, b) = (b, a)
a
b
//交换完毕
二,可选类型. 在OC里面,会经常用到先定义一个变量,但是不马上使用,回去给它赋值为0或nil,但是Swift是一门强类型语言,nil也是一种特殊的类型,如果给它一开始就赋值为nil的话,那么当它的真实类型不匹配的时候,就会报错了.所以Swift中推出了可选类型.它的取值有空值和有值2种.基本用法如下
//1.定义可选类型
var name : String? = nil
//var Name :Optional<String> = nil //不常用
//2.赋值
name = "cjh"
//3.取值 print(name!)
//4.强制解包是个危险的操作,如果没有值,强制解包会导致程序崩溃,所以先判断
if name != nil {
print(name!)
}
//5.可选绑定
/*
1.会先判断name有没有值,如果没有值,就不执行{}里的内容
2.如果有有值,系统先对name强制解包,再赋值给前面的name,再执行{}的内容
*/
if let name = name{
print(name)
}
三,类型转化. 有is 和as ,其中is就和OC中isKindOfClass类似,判断一个实例是否是某种类型.as就是将实例转成某一种类型,基本用法如下
import UIKit //1.is 的使用 let array = ["cjh","abc",,]
let item = array[]
if item is Int {
print("是整型")
} //2.as? as!
//1.将NSObject转成具体的类型
//2.as? 将NSObject转成一个可选类型
//3.as! 将NSObject转成一个具体的类型(注意:如果转化不成功,程序会崩溃,慎用)
//2.1 定义字典
let infoDict = ["name" : "cjh","age" : ,"height" : 1.8]
let age = infoDict["age"]
//一步一步分开写
if let age1 = age {
let age2 = age1 as? Int
if let age3 = age2{
print(age3)
}
}
//简便写法
if let age = infoDict["age"] as? Int{
print(age)
}
ok,就这样了
奈文摩尔 16.05.12
Swift(二,元组,可选类型,类型转化)的更多相关文章
- swift中的可选类型
可选类型也是Swift语言新添加的对象.主要是为了解决对象变量或常量为空的情况.在前面定义的变量和常量都不能为空.里面必须要有值. Swift中的可选类型则允许变量(常量)中没有值(被设为nil).要 ...
- Swift 可选(Optionals)类型
Swift 的可选(Optional)类型,用于处理值缺失的情况.可选表示"那儿有一个值,并且它等于 x "或者"那儿没有值". Swfit语言定义后缀?作为命 ...
- 窥探Swift之别样的枚举类型
想必写过程序的童鞋对枚举类型并不陌生吧,使用枚举类型的好处是多多的,在这儿就不做过多的赘述了.Fundation框架和UIKit中的枚举更是数不胜数,枚举可以使你的代码更易阅读并且可以提高可维护性.在 ...
- Swift学习(三)类型推导&基本运算&分支&循环
一.Swift中类型推导&基本运算 Swift中类型推导 如果一个标识符在定义时有直接赋值,那么可以根据后面赋值的类型,来推导出前面标识符的类型,这样前面标识符的(:类型)可以省略 查看标识符 ...
- The Swift Programming Language-官方教程精译Swift(5)集合类型 -- Collection Types
Swift语言提供经典的数组和字典两种集合类型来存储集合数据.数组用来按顺序存储相同类型的数据.字典虽然无序存储相同类型数据值但是需要由独有的标识符引用和寻址(就是键值对). Swift语言里的数 ...
- Struts(二十):自定义类型转换器
如何自定义类型转换器: 1)为什么需要自定义类型转化器?strtuts2不能自动完成字符串到所有的类型: 2) 如何定义类型转化器? 步骤一:创建自定义类型转化器的类,并继承org.apache.st ...
- Timestame类型和String 类型的转化
Timestame类型和String 类型的转化 String转化为Timestamp: SimpleDateFormat df = new SimpleDateFormat("yyyy-M ...
- MFC六大核心机制之二:运行时类型识别(RTTI)
上一节讲的是MFC六大核心机制之一:MFC程序的初始化,本节继续讲解MFC六大核心机制之二:运行时类型识别(RTTI). typeid运算子 运行时类型识别(RTTI)即是程序执行过程中知道某个对象属 ...
- Redis 小白指南(二)- 聊聊五大类型:字符串、散列、列表、集合和有序集合
Redis 小白指南(二)- 聊聊五大类型:字符串.散列.列表.集合和有序集合 引言 开篇<Redis 小白指南(一)- 简介.安装.GUI 和 C# 驱动介绍>已经介绍了 Redis 的 ...
随机推荐
- mysql数据库表中判断字段是否存在,如果不存在则创建该字段
$key_answer = 'answer'.$question_num; $test_question = mysql_query('DESCRIBE question_manage {$key_q ...
- 数据库中substring的使用方法 CONVERT(varchar(12) , getdate(), 112 )
Sqlserver中经常要操作一些时间类型的字段转换,我又不太记得住,所以搜集了以下的一些SqlserverConvertDateTime相关的资料发表在自己的小站里,方便自己以后要用的时候寻找,望对 ...
- vector中的resize与 reserve
void reserve (size_type n); reserver函数用来给vector预分配存储区大小,即capacity的值 ,但是没有给这段内存进行初始化.reserve 的参数n是推荐预 ...
- Nexus搭建Maven服务器
参考:http://blog.csdn.net/ichsonx/article/details/14642897 1. 为什么使用Nexus 如果没有私服,我们所需的所有构件都需要通过maven的中央 ...
- javascript进击(四)HTML DOM
HTML DOM (文档对象模型) 什么是DOM? DOM 是 W3C(万维网联盟)的标准. DOM 定义了访问 HTML 和 XML 文档的标准. W3C 文档对象模型 (DOM) 是中立于平台和语 ...
- 转:ORACLE制造方法的比较
转自:http://blog.itpub.net/133041/viewspace-438549/ 1.离散制造. 2.重复制造 3.流式制造 Oracle Applications 支持离散.项目. ...
- ls -l命令详解
输入: ls -l 输出: -rwxr-xr-x root root May : b 第一个字段(1个字符):文件类型 - :普通文件 d:目录文件 b:块设备文件(block) c:字符设备文件(c ...
- sql 判断表是否存在
if object_id(N'tablename',N'U') is not nulldrop table tablenamego if exists (select * from sysobject ...
- ACM——A + B Problem (3)
Home Problems 1086 A + B Problem (3) 时间限制(普通/Java):1000MS/3000MS 运行内存限制:65536KByte总提交:2317 ...
- js控制文本框输入数字和小数点等
1.文本框只能输入数字代码(小数点也不能输入) <input onkeyup="this.value=this.value.replace(/\D/g,'')" onafte ...