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

为什么没有快速存储类的存储类型属性?

虞高雅
2023-03-14
问题内容

通过Swift编程语言,我惊讶地发现,与结构和枚举不同,类不支持存储的类型属性。

这是其他OO语言的共同特征,因此我认为有充分的理由他们决定不允许它。但是我无法猜测出这个原因是什么,尤其是由于结构(和枚举)拥有它们。

难道仅仅是Swift的早期开发,还没有实现吗?还是在语言设计决策背后有更深层的原因?

顺便说一句,“存储类型属性”是Swift术语。在其他语言中,这些可能称为类变量。示例代码:

struct FooStruct {
    static var storedTypeProp = "struct stored property is OK"
}

FooStruct.storedTypeProp // evaluates to "struct stored property is OK"

class FooClass {
    class var computedClassProp: String { return "computed class property is OK" }

    // class var storedClassProp = "class property not OK" // this won't compile
}

FooClass.computedClassProp // evaluates to "computed class property is OK"

编辑:

我现在意识到可以解决此限制,例如,通过使用具有存储属性的嵌套结构:

class Foo {
    struct Stored {
        static var prop1 = "a stored prop"
    }
}

Foo.Stored.prop1 // evaluates to "a stored prop"
Foo.Stored.prop1 = "new value"
Foo.Stored.prop1 // evaluates to "new value"

这似乎排除了它们成为此限制的一些深不可测的语言设计原因。

考虑到这一点以及Martin Gordon提到的编译器消息的措辞,我必须得出结论,这只是一个(次要的)遗漏之处。


问题答案:

编译器错误是“尚不支持类变量”,因此似乎他们尚未实现。



 类似资料:
  • 本文向大家介绍HTML5存储类型有什么区别?相关面试题,主要包含被问及HTML5存储类型有什么区别?时的应答技巧和注意事项,需要的朋友参考一下 1)HTML5能够本地存储数据,在之前都是使用cookie使用的,HTML5提供了下面两种本地存储方案: 2) localStorage用于持久化的本地存储,数据永远不会过期,关闭浏览器也不会丢失。 3) sessionStorage 同一个会话的页面才能

  • 问题内容: 以下代码使快速(3,3.1,4)编译器崩溃: 我可能天真地希望编译器将其推断为具有签名的Function Type ,之后,我可以这样称呼它: 我想我的问题是:显然,编译器应该执行除崩溃以外的其他操作,但是Swift目前应该支持这种语法吗? 问题答案: 如您所说,编译器永远不会崩溃;这确实是一个错误,已在此处提交。Swift团队成员Slava Pestov在其中说: 我们计划使MyPr

  • 存储类用于定义容器集群中的不同存储类型。 存储类用于定义容器集群中的不同存储类型,目前仅支持本地存储和Ceph存储。容器集群默认提供本地存储的存储类。存储类用于配合持久卷(PV)动态的创建需要的存储资源。 存储类的详细介绍内容,请参考kubernets官方文档-存储类。 入口:在云管平台单击左上角导航菜单,在弹出的左侧菜单栏中单击 “容器/集群/存储类” 菜单项,进入存储类页面。 查看存储类 该功

  • 第1章到第3章用标识符作为变量名。变量属性包括名称、类型、长度和值。本章用标识符作为用户自定义的函数名。实际上,程序中的每个标识符还有其他属性,包括存锗类(storageclass)、作用域(scope)和连接(linkage)。 C++提供了4个存储类说明符(storage class specifier):auto、register、extern和static。标识符的存储类说明符可以确定其存

  • 存储类定义 C++ 程序中变量/函数的范围(可见性)和生命周期。这些说明符放置在它们所修饰的类型之前。下面列出 C++ 程序中可用的存储类: auto register static extern mutable thread_local (C++11) 从 C++ 11 开始,auto 关键字不再是 C++ 存储类说明符,且 register 关键字被弃用。 auto 存储类 自 C++ 11

  • 我正在尝试使用spring library for google cloud API: Spring-Cloud-gcp-starter-vision 但Spring应用程序上下文无法加载,出现错误: 引起原因:org.springframework.beans.factory.不满意依赖异常:错误创建在类路径资源[org/spring框架/云/gcp/自动配置/视觉/CloudVisionAut