问号的意思是什么? 迅速?
在快速编程中,我发现了一些对象的问号。
var window: UIWindow?
任何人都可以解释它的使用吗?
您可以使用
if
和let
来处理可能丢失的值。 这些值表示为optionals
。 一个optional
值包含一个值或者包含nil
来表示缺失值。 在值的types后面写一个问号(?),将该值标记为optional
。如果可选值
nil
,则条件为false
,跳过花括号中的代码。 否则,在let
之后,可选值被展开并分配给常量,这使得在代码块内可用解包值。
摘录自:苹果公司“Swift编程语言”,iBooks。 https://itun.es/pk/jEUH0.l
例如:
var optionalString: String? = "Hello" optionalString == nil var optionalName: String? = "John Appleseed" var greeting = "Hello!" if let name = optionalName { greeting = "Hello, \(name)" }
在这个代码中,输出将是Hello! John Appleseed
Hello! John Appleseed
。 如果我们将optionalName
的值设置为nil
。 if
条件结果将是false
, if
将被跳过。
types之后的问号指的是可Optionals
,Swift中的一种方式,可以让你指出一个值可能根本不存在的可能性,而不需要特殊的常量。
在Objective-C中,当没有要返回的对象,或者不是对象的常量,比如NSNotFound
常量时,在相同的情况下你会使用它。 Optionals为所有数据types提供了一致的方法。
从苹果提供的iBook
在价值可能不存在的情况下使用可选项。 一个可选的说:
- 有一个值,它等于x
要么
- 根本没有价值
这是一个例子。 Swift的Stringtypes有一个名为toInt的方法,它试图将一个String值转换成一个Int值。 但是,并不是每个string都可以转换成一个整数。 string“123”可以转换为数字值123,但string“你好,世界”没有一个明显的数值要转换。
let possibleNumber = "123" let convertedNumber = possibleNumber.toInt() // convertedNumber is inferred to be of type "Int?", or "optional Int"
由于toInt方法可能会失败,它会返回一个可选的Int,而不是Int。 可选的Int被写为Int ?,而不是Int。 问号表示它所包含的值是可选的,这意味着它可能包含一些Int值,或者它可能根本不包含任何值。 (它不能包含任何其他内容,比如Bool值或String值,它可以是一个Int,或者什么也不是。
有关选项的语言参考iBook的一整节,在本书中多次提到。 你应该仔细看看它,因为它是Swift编程的一个基本概念,而且在很多其他语言中并不普遍。
types的可选值。
例如:types转换运算符的可选版本: as?
,意思as
用于types转换,可能是可选的转换。