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

私人变量可以从班级外部访问

柳杰
2023-03-14
问题内容

这是在Playground中完成的,只是为了简化。

class MyPrivateVar
{
    private var priv: String?
}

var myInstance = MyPrivateVar()

myInstance.priv = "Something"

没有编译器警告。实际上,自动完成显示priv没有问题。我的理解是,在类{}的边界之外,我不应该看到私有的东西,func也不可以var

我想念什么吗?


问题答案:

Swift中的访问修饰符与其他语言的实现方式不同。分为三个级别:

private:仅在 该特定文件 内可访问 __

internal:仅在模块(项目)中可访问

public:可从任何地方访问

除非另有标记,否则您编写的所有内容均为internal默认设置。

在斯威夫特博客有一个关于访问控制后,当功能处于beta
4中引入和苹果的文档中有一章为好。



 类似资料:
  • 为什么这段代码不起作用 在这段代码工作的时候? 在第一段代码中,当我试图通过内部类“a”的对象引用内部类“a”的实例变量“x”时,我得到一个错误,说我是在静态上下文中使用内部类。在其他方法中执行相同操作时没有错误。

  • 问题内容: 我外面有一个数组: 我想让我的函数可以访问其外部的数组,以便可以向其添加值 如何为函数赋予正确的作用域范围? 问题答案: 默认情况下,当您在函数内部时,您无权访问外部变量。 如果您希望函数可以访问外部变量,则必须在函数内部将其声明为: 有关更多信息,请参见 可变作用域 。 但是请注意, 使用全局变量不是一个好习惯 :通过这种方法,您的函数不再是独立的。 一个更好的主意是使您的函数 返回

  • 我确实读过一些讨论内部类的主题,我的印象是内部类可以访问封闭类的变量和方法。下面我有一个外部类和一个内部类,在测试类中我创建一个外部类的实例,然后从它创建一个内部类的实例。但是,我无法通过内部类引用访问字符串变量a。帮忙?

  • 问题内容: 我确实阅读了许多讨论内部类的主题,并且给人的印象是内部类可以访问封闭类的变量和方法。在下面的代码中,我有一个外部类和一​​个内部类,在测试类中,我创建了一个外部类的实例,然后从中创建了一个内部类的实例。但是我无法通过内部类引用访问String变量。救命? 问题答案: 内部类可以通过自己的方法访问外部类的方法和属性。看下面的代码:

  • 问题内容: 大家好!我有一个简单的问题。…为什么我可以从main方法中获得一个私有变量?我知道,我在包含类中,但这是主要的。我相信主体不是包含它的类的一部分……那么我不会去找私人成员,但是我可以……为什么?请帮助… thx 问题答案: Main是您的类的一部分,您已经在类中声明了它:) main不是您的对象的一部分,它不会是您从该类创建的对象的任何部分,但它仍然是该类的一部分。这对于任何静态函数都

  • 问题内容: 您好,我很想知道Java是否有任何目的使私有类变量公开。 提前致谢。 问题答案: 是的,有目的。如果这样做,那么那些可以访问该类的程序元素可以直接操作该变量。否则(例如,如果变量是私有的),那些元素仍将能够访问该类,但将无法操纵该变量(除非您为其提供了一个getter / setter方法)。 这样考虑:类修饰符定义对类的访问级别,然后变量修饰符定义对变量本身的访问级别(对于那些可以访