Swift教程之可选类型【问号的用法】

原创 2015年07月09日 14:11:03
//MARK:-----------可选类型?的用法------------
/*
-------------------------------------------------------------
可选类型(变量名: 类型?)
这个值要么存在,并且等于x,要么根本不存在。
可选类型类似于Objective-C中指针的nil值,但是nil只对类(class)有用,指对象不存在,而Swift 的 nil 不是指针,它代表特定类型的值不存在。任何类型的可选类型都能赋值为 nil,而不仅限于对象类型。并且更安全。
*/
let num = "123"

//由于toInt方法可能会失败,因此它会返回一个可选的Int类型,而不同于Int类型。一个可选的Int类型被记为Int?,不是Int。问号表明它的值是可选的,可能返回的是一个Int,或者返回的值不存在。
let convertedNumber:Int? = Int(num)// convertedNumber is inferred to be of type "Int?", or "optional Int"

var serverResponseCode: Int? = 404  //要么存在,且值为404
serverResponseCode = nil            //要么不存在。要将可选变量设为值不存在的状态,可以给它赋特殊值 nil


/*nil 不能用于非可选量。
如果代码中的常量或变量需要适配值不存在的特殊情况,务必将它声明为恰当的可选类型。
如果定义的可选量时不提供默认值,该常量或变量将自动设为 nil
*/
//var strValue = nil  //错误
var strValue : String?


//判断一个Optional的值是否有值,可以用if来判断
if (strValue != nil)
{
    //do sth with strValue
}

/* 使用Optional值
在使用Optional值的时候需要在具体的操作,比如调用方法、属性、下标索引等前面需要加上一个?
问号的意思是询问是否响应后面这个方法,和原来的isResponseToSelector有些类似
*/
let hashValue = strValue?.hashValue     //strValue是Optional的字符串,如果strValue是nil,则hashValue也为nil,如果strValue不为nil,hashValue就是strValue字符串的哈希值
//let hashValue = strValue.hashValue      //错误。对于Optional值,不能直接进行操作
print("hashValue is \(hashValue)")

/*总结 ? 使用场景
声明Optional值变量
用在对Optional值操作中,用来判断是否能响应后面的操作[判断是否是nil的三元运算符]
*/

版权声明:本文为博主原创文章,未经博主允许不得转载。

初探swift语言的学习笔记二(可选类型?和隐式可选类型!)

swift 学习笔记
  • fengsh998
  • fengsh998
  • 2014年06月06日 17:31
  • 18014

Swift的基本知识(三)<可选类型?和隐式可选类型!>

在swift中,可选类型的根源其实是一个枚举类型,里面有some和none两种类型。其实就是所谓的nil就是optional.some,非nil就是optional.some。然后会通过some(T)...
  • Hibiscus_blog
  • Hibiscus_blog
  • 2017年05月17日 10:32
  • 162

OC可选类型

  • baohanqing
  • baohanqing
  • 2016年05月21日 15:12
  • 161

Swift教程之可选类型【问号的用法】

//MARK:-----------可选类型?的用法------------ /* ----------------------------------------------------------...
  • pengyuan_D
  • pengyuan_D
  • 2015年07月09日 14:11
  • 465

Swift-可选类型(Optional)以及解包

// // main.swift // OptionalDemo // // Created by 程磊 on 15/5/23. // Copyright (c) 2015年 chenglei...
  • chenglei9128
  • chenglei9128
  • 2015年05月23日 11:02
  • 2098

三十三 Swift3.0之 可选类型

/* 可选类型: 可选类型的本质其实就是一个枚举 None 没有值 Some 有值 格式: Optional 或 在类型后面加上?号 由于可选类型在Swift中随处可见, 所以系统做了一个语法糖,...
  • gezi0630
  • gezi0630
  • 2017年04月24日 09:43
  • 413

C#中单问号(?)和双问号(??)的用法简单整理

1.单问号(?) 1.1 单问号运算符可以表示:可为Null类型,C#2.0里面实现了Nullable数据类型 //A.比如下面一句,直接定义int为null是错误的,错误提示为无法将nu...
  • wsw455680751
  • wsw455680751
  • 2017年03月18日 14:36
  • 2103

java的String用法类型总结

  • 2016年03月25日 18:29
  • 22KB
  • 下载

Swift04-可选类型的声明及使用

/***********可选类型Optionals*********** 在swift中,可选类型其根源是一个枚举型,里面有None和Some两种类型。其实所谓的nil就是Optio...
  • Vincent_lhj
  • Vincent_lhj
  • 2017年03月09日 11:22
  • 120

Swift中的可选类型?和隐式可选类型!的深入理解

可选类型、隐式可选类型 在Swift中,可选类型其根源是一个枚举型,里面有None和Some两种类型。其实所谓的nil就是Optional.None, 非nil就是Optional.Some, 然后...
  • humiaor
  • humiaor
  • 2017年03月28日 10:20
  • 197
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:Swift教程之可选类型【问号的用法】
举报原因:
原因补充:

(最多只允许输入30个字)