Swift常量比C中的常量更强大

时间:2018-01-18 04:00:52

标签: c swift

我在Apple的Swift 4编程语言书中读到了以下声明。“ Swift还广泛使用了值无法更改的变量。这些被称为常量,并且比C

中的常量更强大

摘自:Apple Inc.“Swift编程语言(Swift 4)。”iBooks。 https://itunes.apple.com/in/book/the-swift-programming-language-swift-4-0-3/id881256329?mt=11

有人可以解释它比C常数更强大吗? Swift常量有什么特别之处?问题可能是微不足道的。但我无法在任何地方找到令人信服的答案。请帮忙。

1 个答案:

答案 0 :(得分:1)

嗯,这里有Swift常量(let属性)的一些优点,而不是C中的那些:

  • 类型推断
  • 实际上保证了常量,在C中你可以抛弃常量

    const SomeType constVar = someValue();
    mutatingFunction((SomeType) constVar); // Uh oh
    

    斯威夫特禁止绕过像这样的常规正确性。

  • 更细微的范围概念; let属性可以存在:
    • 在文件级别(C中唯一允许的区域)
    • 在扩展程序中(仅限staticclass属性),可以为其提供private访问权限。 (定义了新的访问保护边界,C的访问保护仅限于文件边界)
    • 在类型级别,例如staticclass属性。 (C结构可以是static connie let consts)
  • Swift guarentees明确的初始化。保证在init中分配所有let属性。没有人会留下未定义的值。
  • let (name, age) = ("Bob", "20") // Declares and assigns 2 different variables, at once 属性可以声明为元组破坏的目标,即使是异构类型也是如此。

    ,

    C 确实使用int x = 1, y = 2;运算符在一个语句中支持多个分配,但它们必须属于同一类型。例如。 {{1}}