function – Swift,变量与方法名称相同

我有一个 :

var formVC:UIViewController!

我也想尝试一个名为的函数:

func formVC()->UIViewController{....}

我知道在OBJC中它有用,但我没有看到在Swift中这样做的方法.有没有办法解决这个问题,或者我不理解Swift中明显的架构/概念变化?

提前致谢.

这在ObjC中是一个坏主意,在Swift中它是非法的.考虑其中一些情况:

class X {
    var value : Int = 0
    func value() -> Int { return 1 }
}
let x = X()

在这种情况下x.value是什么?是Int还是它() – >诠释?将类的方法视为闭包是合法且有用的.

如果我们更加棘手,并且这样做会怎样?

class X {
    let value: () -> Int = { 2 }
    func value() -> Int { return 1 }
}
let x = X()
let v = x.value() // ????

Swift应该使用属性值然后调用它吗?或者它应该调用方法值()?闭包是完全合法的属性.

ObjC实际上存在相同的限制.您无法创建与方法冲突的合成属性(如果它们具有不同的类型;如果它们具有相同的时间,则ObjC将默默地不合成访问器).你正在考虑Swift属性,就像它们等同于ObjC的ivars,但那是不对的. Swift的属性等同于ObjC的属性(即访问ivars的方法).您无法访问Swift中的基础ivars.

相关文章
相关标签/搜索