init()
有疑问
例如,我想初始化Int。
var number: Int = 20
var number = Int(20)
var number = Int.init(20)
所有表达都一样吗? 第二,为什么会出现这种表达?
var check = "123"
var phoneNum:Int?
if((phoneNum = Int.init(check)) != nil)
{
print("Success");
}
没有错误!
var check = "123"
var phoneNum:Int? = Int.init(check)
if(phoneNum != nil)
{
print("Success");
}
答案 0 :(得分:3)
是的,这些都具有相同的效果:
var number: Int = 20
var number = Int(20)
var number = Int.init(20)
这是另一种方法:
var number = 20
这会产生错误:
var check = "123"
var phoneNum:Int?
if((phoneNum = Int.init(check)) != nil)
{
print("Success");
}
你得到一个错误(“错误:类型'()的值永远不能为零,不允许比较”)因为Swift中的赋值返回()
,类型为Void的唯一值,但是{ {1}}类型为Optional,与Void不同。 Swift中的赋值通常不能用作表达式。
答案 1 :(得分:2)
我想将此添加为对rob答案的评论,但由于我没有足够的声誉,这是我的回答?评论(双关语;)。
关于最后两个示例,您还可以使用optional binding来帮助完成作业:
IF ADVERT = 1 - We load advert
IF ADVERT = 0 - We didn't load advert.
更改var check = "123"
var phoneNumber: Int?
if let number = Int.init(check) {
phoneNumber = number
print("Success")
}
print(phoneNumber)
// Success
// Optional(123)
值:
check
我希望这也有帮助。