我是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 = something
和Int()
之间有什么区别?
答案 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。
如果您想知道是否可以在自己的类/结构上执行此操作,答案是肯定的 - 您只需要实现与您要使用的文字类型相对应的协议。