问号的含义是什么?'在快速?

时间:2014-06-05 10:01:46

标签: ios swift

在Swift编程中,我发现了一些带有对象的问号。

var window: UIWindow?

任何人都可以解释它的使用吗?

3 个答案:

答案 0 :(得分:55)

  

您可以一起使用iflet来处理可能的值   失踪。这些值表示为optionals。一个optional   值包含一个值或包含nil以表示该值   价值缺失。在值的类型后面写一个问号(?)   将值标记为optional

     

如果可选值为nil,则条件为false,代码为let   跳过括号。否则,将打开可选值并将其打开   在var optionalString: String? = "Hello" optionalString == nil var optionalName: String? = "John Appleseed" var greeting = "Hello!" if let name = optionalName { greeting = "Hello, \(name)" } 之后分配给常量,它产生未包装的值   在代码块中可用。

摘自:Apple Inc.“The Swift Programming Language。”iBooks。 https://itun.es/pk/jEUH0.l

例如:

Hello! John Appleseed

在此代码中,输出为optionalName。如果我们将nil的值设置为iffalse条件结果为if,{{1}}内的代码将被跳过。

答案 1 :(得分:20)

类型之后的问号引用Optionals,这是Swift中的一种方式,它允许您指示可能根本不存在任何类型的值,而不需要特殊常量。

它在Objective-C中明确return nil的情况下使用,当没有要返回的对象时,或者对于不是对象的值,常量如{ {1}}。 Optionals提供了在所有数据类型中实现此目标的一致方法。

来自Apple提供的iBook

  

在可能缺席值的情况下使用选项。一个   可选说:

     
      
  • 有一个值,它等于x
  •   
     

     
      
  • 根本没有价值
  •   
     

这是一个例子。 Swift的String类型有一个名为toInt的方法,   它试图将String值转换为Int值。但是,不是   每个字符串都可以转换为整数。字符串" 123"可   转换为数值123,但字符串"你好,世界"   没有明显的数值可以转换为。

NSNotFound
  

因为toInt方法可能会失败,所以它返回一个可选的Int,   而不是Int。可选的Int写为Int ?,而不是Int。该   问号表示它包含的值是可选的,   意味着它可能包含一些Int值,或者它可能包含no   价值。 (它不能包含任何其他内容,例如Bool值或   一个字符串值。它要么是Int,要么根本就没有。)

关于ibis on Optionals的语言参考有一整节,整本书中都提到了几次。你应该仔细研究它,因为它是Swift编程的基本概念,并且在许多其他语言中并不普遍。

答案 2 :(得分:1)

类型的可选值。

对于Ex: 类型转换运算符的可选版本:as?,用于类型转换的平均as用于转换可能是可选的。