Swift隐式解析,可选,断言
来源:互联网 发布:如何上google 知乎 编辑:程序博客网 时间:2024/06/08 11:43
// Swift 可选
/**
注意:C和 Objective-C中并没有可选这个概念。最接近的是 Objective-C中的一个特性,一个方法要不返回一个对象要不返回nil,nil表示“缺少一个合法的对象”。然而,这只对对象起作用——对于结构体,基本的 C 类型或者枚举类型不起作用。对于这些类型,Objective-C方法一般会返回一个特殊值(比如NSNotFound)来暗示值缺失。这种方法假设方法的调用者知道并记得对特殊值进行判断。然而,Swift的可选可以让你暗示任意类型的值缺失,并不需要一个特殊值。
*/
// 例子
//使用可选(optionals)来处理值可能缺失的情况
let abc = "123"//申明一个字符串abc其值为"123"
let xyz = Int(abc)//转成int型若可转成功为Optional(123)否为nil
//返回的是一个可选的值
print(xyz)
if (xyz !=nil){
print("\(abc) has an integer value of \(xyz!) ")
}
//当确定某个可选的确切有值的时候,可以用 "!"来强制解析他。
//类型标注
var ser :Int? =404
ser = nil
//类型标注
var www :String?// www 就是nil
/**
Swift 的nil和 Objective-C中的nil并不一样。在 Objective-C中,nil是一个指向不存在对象的指针。在 Swift中,nil不是指针——它是一个确定的值,用来表示值缺失。任何类型的可选都可以被设置为nil,不只是对象类型。
**/
/*
一个隐式解析可选其实就是一个普通的可选,但是可以被当做非可选来使用,并不需要每次都使用解析来获取可选值。下面的例子展示了可选String和隐式解析可选String之间的区别:
纯文本复制*/
let possibleString: String? ="An optional string."
print(possibleString!)// 需要惊叹号来获取值
// 输出 "An optional string."
let assumedString:String! = "An implicitly unwrapped optional string."
print(assumedString)// 不需要感叹号
// 输出 "An implicitly unwrapped optional string."
//断言判断一个条件是否为真
//你可以使用全局assert函数来写一个断言。向assert函数传入一个结果为true或者false的表达式以及一条信息,当表达式为false的时候这条信息会被显示:
let age = -3
assert(age >=0, "a person's old cannot be less than zero")
//如果 age >=0不会出错。但是 <0断言被立即触发执行不下去.
//何时使用断言
//
//当条件可能为假时使用断言,但是最终一定要保证条件为真,这样你的代码才能继续运行。断言的适用情景:
//整数的附属脚本索引被传入一个自定义附属脚本实现,但是下标索引值可能太小或者太大。
//需要给函数传入一个值,但是非法的值可能导致函数不能正常执行。
//一个可选值现在是nil,但是后面的代码运行需要一个非nil值。
- Swift隐式解析,可选,断言
- 1.7 Swift可选值, 隐式解析可选 swift 中的? !
- Swift可选绑定、断言
- swift语言-隐式解析可选
- swift学习笔记之可选值和隐式可选解析
- swift-基础08-隐式解析,隐式装包,强制装包和断言
- 【swift 学习】第二课---类型转换,类型别名,元祖,可选类型,可选绑定,断言
- [iOS]#Swift#可选解析-optional
- Swift语法基础:10 - Swift的布尔值, 元组, 可选, 断言
- 初探swift语言的学习笔记二(可选类型?和隐式可选类型!)
- swift语言的学习笔记二(可选类型?和隐式可选类型!)
- 初探swift语言的学习笔记二(可选类型?和隐式可选类型!)
- 初探swift语言的学习笔记二(可选类型?和隐式可选类型!)
- swift语言的学习笔记二(可选类型?和隐式可选类型!)
- Swift的基本知识(三)<可选类型?和隐式可选类型!>
- Swift入门(四)——可选类型(Optionals)与断言(Assert)
- Swift学习笔记(2)--元组(Tuples)、Optional(可选值)、(Assertions)断言
- Swift基础语法(常量变量、数据类型、元组、可选、断言)
- shell基础学习
- php 中的重载技术——解决调用对象(或类)的未定义的属性或方法出错问题
- (十五)枚举
- C类型转换:error C2664:不能将参数 从“int”转换为“const char *”
- Android 6.0 运行时权限
- Swift隐式解析,可选,断言
- Docker新手入门:基本用法
- leetcode 451 Sort Characters By Frequency C++
- linux位系统安装官方install_flash_player_npapi_linux.x86_64.tar.gz插件包的方法
- 记录在Ubuntu下搭建React Native踩过的坑
- 遇到java.lang.IllegalStateException: commit already called
- Flex 布局教程:语法篇
- 为什么容器技术(docker)将主宰世界,docker的意义
- QAbstractTableMode