Swift 中 Int() 和 :Int 的区别

Difference between Int() and :Int in Swift

我是 Swift 的新手,我对以下内容感到困惑:

Int(something)var x :Int = something行中,Int():Int有什么区别?

其实var x = Int(something)var x : Int = something是完全一样的

与 Objective-C 不同,其中 int 是标量类型 Int Swift 是一个结构, 必须初始化结构。

前一种语法是显式调用初始化器,后者是通过赋值隐式调用

从纯语言的角度来看,为整数(或其他数值类型)变量赋值的正确方法是:

let num = Int(16)

或其任何变体。

但是 Swift 实现了一些语法糖来减少冗长 - 有了它,您可以将上面的语句重写为:

let num = 16

相当于:

let num: Int = 16

(感谢类型推断)

这是可能的,因为 Int 类型实现了 IntegerLiteralConvertible 协议,通过这样做,编译器能够将整数文字转换为初始化程序调用。

还有其他几个类似的协议,用于字符串、数组、浮点数等。

如果你想了解更多,我建议阅读 NSHipster 上的 Swift Literal Convertibles

如果您想知道自己是否可以做到这一点 classes/structs,答案是肯定的 - 您只需实施与您要使用的文字类型相对应的协议。