【问题标题】:What is the intended use of optional variable/constant in swiftswift中可选变量/常量的预期用途是什么
【发布时间】:2014-06-12 20:08:44
【问题描述】:

在 objC 中,

NSString *stringValue = @"123s";
NSInteger *intValue = [stringValue integerValue];   
NSLog(@"intergerValue %@",intValue);

if(!intValue)
{
   NSLog(@"caught null object");

}
else
{
    // Do appropriate operation with the not null object
}

打印“interValue (null)” “捕获的空对象”

并且通过在 if 条件中使用 !(not) 运算符安全地完成绑定...

但是,在 swift 中,使用可选变量的等效 sn-p 是

 var normalValue : String = "123s"
 var optionalValue = normalValue.toInt()
 println("optionvalue \(optionalValue)")

  if optionalValue {
     // Do appropriate operation with the not nil value
  }
  else{

      println("caught null object")
  }

这个“可选绑定”也在objectiveC中完成,那么拥有可选变量/常量的确切用途是什么。也有人说我们可以避免返回 null 对象,而是可以返回 nil 值。当我们返回一个空对象时有什么问题,它会导致性能问题吗? 您的有效想法....

【问题讨论】:

    标签: swift optional-variables


    【解决方案1】:

    可选类型背后的意图是让程序员创建可能没有值的变量。它是 Objective-C 中的默认模型,在 Swift 中已被反转,因为该语言要求变量在默认情况下具有值。

    Objective-C 通过指针引用所有对象(因此类型名称后面有星号*)。由于允许所有指针没有值(即nil),因此可以将所有 Objective-C 对象视为可选的,即相应的变量可能根本没有值。

    由于 Swift 在源代码层面没有 C 兼容性要求,语言设计者选择要求对象具有指定类型的值,并通过可选类型提供了对可能没有值的变量的支持。

    【讨论】:

    • 你正在证明 swift 做了一些已经存在于 Objective-C 中的事情,特别是在 object-returns-null-when-non-exist 的情况下,而不是比 Objective-C 新的/超越的事情.这是在 Swift 中拥有可选变量/常量的主要目的吗,Swift 必须做的事情可能比可选变量/常量更多吗?如果您知道更多,请分享。
    • @Suresh Objective-C 的“默认可选”行为是 C 的遗留问题,并不是特别好。根本没有“必需”的对象——所有的对象都是“可选的”。 Swift 提供了“必需的”对象,并将它们设为默认值,因为这是您最常想要的行为。当您想要“可选对象”行为时,它还为不太常见的情况添加“可选”。
    • 非常感谢您分享您对此主题的深刻见解。再次感谢您:-)
    猜你喜欢
    • 1970-01-01
    • 2011-04-01
    • 1970-01-01
    • 2020-03-10
    • 2010-12-21
    • 1970-01-01
    • 2018-05-17
    • 2018-01-12
    • 1970-01-01
    相关资源
    最近更新 更多