【问题标题】:Swift Syntax Error and init()?Swift 语法错误和 init()?
【发布时间】:2015-12-19 09:11:15
【问题描述】:

我学得很快。我对初始化器有疑问 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");
}

【问题讨论】:

  • 为什么会出现错误?
  • Swift 不是 C。在 Swift 中,赋值不会产生值。
  • 我觉得 Swift 像 C。我努力学习 Swift!感谢您的评论。

标签: ios swift swift2 swift-playground


【解决方案1】:
  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 类型的唯一值,但 nil是 Optional 类型,与 Void 不同。 Swift 中的赋值通常不能用作表达式。

【讨论】:

    【解决方案2】:

    我想将此作为评论添加到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
    

    我希望这也有帮助。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2015-06-01
      • 2015-05-09
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-06-15
      相关资源
      最近更新 更多