Swift中Int()和:Int之间的区别

时间:2015-07-01 10:03:43

标签: swift int

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

SELECT bsaddr.addressid AS t_buyselladdressid FROM vleaf_transactiondetail_all tdcurr inner join transactionmain tm ON tm.transactionid = tdcurr.transactionid left outer join address bsaddr ON tm.customerid = bsaddr.customerid AND bsaddr.addressid = tdcurr.addressid AND ( ( tdcurr.productid = 1 AND bsaddr.addresstypeid = 3 ) OR ( tdcurr.productid = 2 AND bsaddr.addresstypeid = 4 ) ) 行和Int(something)行中,var x :Int = somethingInt()之间有什么区别?

2 个答案:

答案 0 :(得分:4)

事实上var x = Int(something)var x : Int = something完全相同。

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

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

进行隐式调用

答案 1 :(得分:1)

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

let num = Int(16)

或其任何变体。

然而,Swift实现了一些语法糖,使其不那么冗长 - 多亏了你可以将上述语句重写为:

let num = 16

相当于:

let num: Int = 16

(感谢类型推断)

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

还有其他几种协议,如string,array,float等。

如果您想了解更多信息,我建议您在NSHipster上阅读Swift Literal Convertibles

如果您想知道是否可以在自己的类/结构上执行此操作,答案是肯定的 - 您只需要实现与您要使用的文字类型相对应的协议。