Swift学习——Swift解释具体的基础(六)
Optionals 可选
可选(它似乎并不如此翻译)它适用于那些值这种情况可能是空的,有两种情况一个可选:存在值并等于x,要么值不存在。
选配的概念在OC和C里面并没有。在OC中最接近的概念就是:OC中的返回值为对象的函数。当对象不存在的时候,能够返回nil,可是nil仅仅能代表对象,不能够代表基础类型或者结构体和枚举类型。OC中使用NSNotFound表示值不存在。
在Swift中,不须要使用其它的类型表示不存在的值。
举个样例:
在Swift中,String类型有一个方法叫做toInt,可是并非全部的String都能够转换成Int的。
let possibleNumber = "123"
let convertedNumber = possibleNumber.toInt()
// convertedNumber is inferred to be of type "Int?", or "optional Int
由于toInt可能会失败。它会返回一个可选的Int类型(写作 Int?)而不是Int类型,表示这个返回值能够是一个Int类型的值。也有可能没有值。
If Statements and Forced Unwrapping if条件语句和强制解析
你能够使用IF条件语句推断一个选配里面有没有值,一旦你确定了选配中含有值,你能够在选配的名称后面加上一个感叹号(!),表示我知道这个选配里面含有值。这个过程被称为选配值的强制解析。
if convertedNumber {
println("\(possibleNumber) has an integer value of \(convertedNumber!)")
} else {
println("\(possibleNumber) could not be converted to an integer")
}
// prints "123 has an integer value of 123
在使用!之前,一定要保证配选值里面存储着真的值。不为空。
Optional Binding 可选绑定
你能够使用可选绑定推断一个可选值里面是否有值,假设有值,能够将这个值作为常量或者变量。能够使用if或者while语句进行推断和赋值。
能够重写上面的强制解析,使用可选绑定进行推断一个选配值是否为空:
if let actualNumber = possibleNumber.toInt() {
println("\(possibleNumber) has an integer value of \(actualNumber)")
} else {
println("\(possibleNumber) could not be converted to an integer")
}
// prints "123 has an integer value of 123"
上述过程能够理解为:
假设possibleNumber.toInt获得的选配整型包括值。那就定义一个常量actualNumber用来存储这个值。
假设转换成功,actualNumber在if的第一个条件中可用,它已经被初始化包括可选值。不须要使用!
来訪问它的值。
在可选绑定的过程中,你能够使用变量也能够使用常量。
nil 空值
var serverResponseCode: Int? = 404
// serverResponseCode contains an actual Int value of 404
serverResponseCode = nil
// serverResponseCode now contains no value
假设定义常量和变量的时候没有进行赋值。那么默认的值就是nil
var surveyAnswer: String?
// surveyAnswer is automatically set to nil
注意:Swift中间nil和OC中间nil代表的意义是不一样的,OC中间nil它不是对象指针的一种特定类型的,在Swift在nil它是一种特定类型的空省值。不管可选什么类型的值它可以被设置为nil,如果对象类型是不一定。
Swift学习——Swift解释具体的基础(六)的更多相关文章
- Swift学习——Swift基础具体解释(一)
版权声明:本文为博主原创文章,未经博主同意不得转载. https://blog.csdn.net/zhenyu5211314/article/details/34807025 注:由于基础部分在Swi ...
- Swift学习——Swift解释特定的基础(七)
Implicitly Unwrapped Optionals 隐式解析选项 如上所述.可选意味着常数或变量"没有值".通过可选if声明来推断是否存在值,假设有值析值. 有时候 ...
- 零基础使用Swift学习数据科学
概述 Swift正迅速成为数据科学中最强大.最有效的语言之一 Swift与Python非常相似,所以你会发现2种语言的转换非常平滑 我们将介绍Swift的基础知识,并学习如何使用该语言构建你的第一个数 ...
- 一步一步学习Swift之(二):好玩的工具playground与swfit基础语法
playground好于在于能一边写代码一边看到输出的常量变量的值.不需要运行模拟器. 我们来试一下该工具的用法. 打开xcode6开发工具,选择Get started with a playgrou ...
- swift学习笔记1——基础部分
之前学习swift时的个人笔记,根据github:the-swift-programming-language-in-chinese学习.总结,将重要的内容提取,加以理解后整理为学习笔记,方便以后查询 ...
- swift 学习(一)基础知识 (基本数据类型,操作符,流控制,集合)
xcode 中调用API帮助 1.查看简单信息,选中后 按键 control +左键单击 或者按 右侧属性栏 里的帮助按钮 2.完整API,选中后 按键 control +左键双击 3.查看类.函数 ...
- iOS ---Swift学习与复习
swift中文网 http://www.swiftv.cn http://swifter.tips/ http://objccn.io/ http://www.swiftmi.com/code4swi ...
- ios -- 教你如何轻松学习Swift语法(三) 完结篇
前言:swift语法基础篇(二)来了,想学习swift的朋友可以拿去参考哦,有兴趣可以相互探讨,共同学习哦. 一.自动引用计数 1.自动引用计数工作机制 1.1 swift和o ...
- ios -- 教你如何轻松学习Swift语法(二)
前言:swift语法基础篇(二)来了,想学习swift的朋友可以拿去参考哦,有兴趣可以相互探讨,共同学习哦. 一.可选类型(重点内容) 1.什么是可选类型? 1.1在OC开 ...
随机推荐
- WCF REST (一)
最近工作中学习使用了WCF REST,REST 有很多好处 高效 简约 面向资源 而客户端调用 也变得非常简单.REST 入门的资料等 大家可以去网上找 这里主要分享下遇到的问题以及解决~ 一.环 ...
- 【高德地图API】从零開始学高德JS API(五)路线规划——驾车|公交|步行
先来看两个问题:路线规划与导航有什么差别?步行导航与驾车导航有什么差别? 回答: 1.路线规划,指的是为用户提供3条路线推荐.[高德]在提供路线规划的时候,会提供用户自己定义路线规划功能,这是别家没有 ...
- Log4net.confager配置官方文档
http://logging.apache.org/log4net/release/config-examples.html
- 【Codeforces Round #440 (Div. 2) C】 Maximum splitting
[链接] 我是链接,点我呀:) [题意] 在这里输入题意 [题解] 肯定用尽量多的4最好. 然后对4取模的结果 为0,1,2,3分类讨论即可 [代码] #include <bits/stdc++ ...
- java项目中VO和DTO以及Entity,各自是在什么情况下应用的
j2ee中,经常提到几种对象(object),理解他们的含义有助于我们更好的理解面向对象的设计思维. POJO(plain old java object):普通的java对象,有别于特殊的j ...
- ScrollView ViewPager ListView三者共存的问题
随喜结佛缘 watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvcWlueXVueWluZw==/font/5a6L5L2T/fontsize/400/fill/ ...
- Nutch的日志系统 分类: H3_NUTCH 2015-02-17 20:14 261人阅读 评论(0) 收藏
一.Nutch日志实现方式 1.Nutch使用slf4j作为日志接口,使用log4j作为具体实现.关于二者的基础,请参考 http://blog.csdn.net/jediael_lu/article ...
- Fragment之一:Fragment入门 分类: H1_ANDROID 2013-11-15 18:16 2799人阅读 评论(2) 收藏
参考自张泽华视频 Fragment是自Android3.0后引入的特性,主要用于在不同的屏幕尺寸中展现不同的内容. Fragment必须被嵌入Activity中使用,总是作为Activity的组成部分 ...
- CGI原理解析之二------WEB服务和CGI交互数据
#include <stdio.h> #include <string.h> #include <unistd.h> #include <sys/wait.h ...
- Android EditText文本内容变化监听方法
package com.google; import android.app.Activity; import android.os.Bundle; import android.text.Edita ...