Swift语法错误和init()?

时间:2015-12-19 09:11:15

标签: ios swift swift2 swift-playground

我快速学习。我对初始值设定项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");
}

2 个答案:

答案 0 :(得分:3)

  1. 是的,这些都具有相同的效果:

    var number: Int  = 20
    var number = Int(20)
    var number = Int.init(20)
    

    这是另一种方法:

    var number = 20
    
  2. 这会产生错误:

    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

我希望这也有帮助。