快速关闭"Type 'Int?' is not optional, value can never be nil"


class Test {
    var x: Int?
    var TestX: () -> Bool {
        return self.x == nil
    }
}

编译器抱怨:

类型"Int?"不是可选的,值永远不能为零

也在操场上测试过这个,同样的错误。根据定义,Int?是可选的权利?我的语法有误吗?使用 Swift 3,Xcode 8.3.3

编辑

这行得通

class Test {
    var x: Int?
    var TestX: () -> Bool { return
        { () in
            self.x == nil
        }
    }
}

有人可以解释为什么吗?

如果您的闭包没有参数,您可以简单地使用两个括号:

class Test {
  var x: Int?
  var TestX: () -> Bool { return { x == nil } }
}

也不需要自我。

大多数答案假设我想返回一个布尔值,但我特别想返回一个返回布尔值的闭包(将闭包作为函数参数传递)。无论如何,我想出了该怎么做,这是一个语法问题。虽然仍然不确定语法的含义,但无论如何。这是解决方案:

class Test {
    var x: Int?
    var TestX: () -> Bool { return
        { () in
            self.x == nil
        }
    }
}

相关内容

最新更新