Swift 语法错误和 init()?

Swift Syntax Error and init()?

我学习swift。我有一个关于初始值设定项 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");
}
  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");
    }
    

    你得到一个错误(“错误:'()' 类型的值永远不能为 nil,不允许比较”)因为在 Swift returns () 中赋值,唯一的 Void 类型的值,但是 nil 是 Optional 类型,这与 Void 不同。 Swift 中的赋值通常不能用作表达式。

我想将此添加为对 rob 答案的评论,但由于我没有足够的声誉,这是我的答案吗?评论(双关语;)。

关于最后两个示例,您还可以使用 optional binding 来帮助完成作业:

var check = "123"

var phoneNumber: Int?

if let number = Int.init(check) {
    phoneNumber = number
    print("Success")
}

print(phoneNumber)

// Success
// Optional(123)

更改 check 值:

var check = "A23"

var phoneNumber: Int?

if let number = Int.init(check) {
    phoneNumber = number
    print("Success")
}

print(phoneNumber)

// nil

我希望这也能有所帮助。