当前位置: 首页 > 面试题库 >

Swift,变量与方法名相同

柳向明
2023-03-14
问题内容

我有一个 :

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还是它() -> Int?将类的方法视为闭包是合法且有用的。

如果我们更加棘手,该怎么办:

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

Swift应该使用该属性value然后调用它吗?还是应该调用该方法value()?闭包作为财产完全合法。

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



 类似资料:
  • 问题内容: 在Java中,实例变量和方法可以具有相同的名称而没有任何不稳定或冲突吗? 我想确保是否可以摆脱它的编译问题,以免造成任何错误。 问题答案: 是的,这很好,主要是因为在语法上,它们的用法不同。

  • 问题内容: 我将如何完成? 我敢肯定有一个非常明显的答案。现在只是在逃避我。 问题答案: 是的,他们可以使用相同的名称。但是,要引用实例变量,您需要使用前缀:

  • 本文向大家介绍php变量与数组相互转换的方法(extract与compact),包括了php变量与数组相互转换的方法(extract与compact)的使用技巧和注意事项,需要的朋友参考一下 本文实例讲述了php变量与数组相互转换的方法。分享给大家供大家参考,具体如下: 在php中数组与变量相互转换我们可使用到extract或compact函数,这里就来给大家分析一下这两个函数的用法。 compa

  • 问题内容: 我知道变量作用域由块的开始和块的结尾包围。如果在块内声明了相同的变量,则会发生编译错误。但是,请看以下示例。 在这里,可以在方法中重新声明,尽管它已经在类中声明了。但是在块中,无法重新声明。 为什么类范围变量的重新声明不产生错误,而方法范围变量的重新声明却产生错误? 问题答案: 这是因为不是变量,而是实例字段。允许局部变量与字段具有相同的名称。为了区分变量和具有相同名称的字段,我们在实

  • 问题内容: 我知道变量作用域由块的开始和块的结尾包围。如果在块内声明了相同的变量,则会发生编译错误。但是,请看以下示例。 在这里,可以在方法中重新声明,尽管它已经在类中声明了。但是在块中,无法重新声明。 为什么类范围变量的重新声明不产生错误,而方法范围变量的重新声明却产生错误? 问题答案: 这是因为不是变量,而是实例字段。允许局部变量与字段具有相同的名称。为了区分变量和具有相同名称的字段,我们在实

  • 主要内容:1. 变量声明,2.类型注解声明,3.命名变量,4. 打印变量变量提供了程序可以操作的命名存储。 Swift 4中的每个变量都有一个特定的类型,它决定了变量内存的大小和布局; 可存储在该内存中的值范围; 以及可以应用于变量的操作集。 Swift 4支持以下基本类型的变量 - 或 - 用于整数。 更具体地说,可以使用,来定义位或位有符号整数,而使用或来定义位或位无符号整数变量。 例如,和。 - 用于表示位浮点数,它用于保存小数点较小的数字。 例如,,和。 -