热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

是否可以创建一个struct实例数组?-Isitpossibletocreateanarrayofstructinstances?

Iamtryingtocreateanarrayofstructinstanceslikethis:我试图创建一个这样的struct实例数组:letinstallers:

I am trying to create an array of struct instances like this:

我试图创建一个这样的struct实例数组:

let installers: [AnyObject] = [Homebrew(), Ls()]

But I get this error:

但我得到这个错误:

value of type 'Homebrew' does not conform to expected element type 'AnyObject'

When I give the array no type, I get an ambiguous type error and that it needs more context.

当我给数组没有类型时,我得到一个模糊的类型错误,它需要更多的上下文。

Is it possible to accomplish what I am trying to do?

是否有可能完成我想要做的事情?

I Googled all over, but I can't find anything.

我用Google搜索,但我找不到任何东西。

3 个解决方案

#1


5  

For structs use Any instead of AnyObject.

对于结构使用Any而不是AnyObject。

let installers: [Any] = [Homebrew(), Ls()]

#2


2  

As Rob proposed above, I have created a simple protocol type InstallerType to help you with this. Instead of having it to conform to Any or AnyObject protocols, conforming it to some specific type would categorise your objects in better way.

正如Rob上面提到的,我创建了一个简单的协议类型InstallerType来帮助你解决这个问题。它不是使其符合Any或AnyObject协议,而是将其与某些特定类型相符合,以更好的方式对您的对象进行分类。

extension Homebrew: InstallerType { }
extension Ls: InstallerType { }

let installers: [InstallerType] = [Homebrew(), Ls()]

#3


2  

Following @RobNapier 's suggestion from his comment, I built a protocol. Because both structs use the id and command constants, I came up with this:

根据@RobNapier的评论建议,我建立了一个协议。因为两个结构都使用id和命令常量,所以我想出了这个:

protocol CKInstall {
  var id: String {get}
  var command: [String] {get}
}

Problem solved!

问题解决了!


推荐阅读
  • 本文介绍了设计师伊振华受邀参与沈阳市智慧城市运行管理中心项目的整体设计,并以数字赋能和创新驱动高质量发展的理念,建设了集成、智慧、高效的一体化城市综合管理平台,促进了城市的数字化转型。该中心被称为当代城市的智能心脏,为沈阳市的智慧城市建设做出了重要贡献。 ... [详细]
  • Bro是一款强大的网络安全工具,以及协议识别与统计的工具。Broisapowerfulnetworkanalysisframeworkthatismuchdifferentfro ... [详细]
  • php 快速入门的,入门指南PHP 快速入门参考指南
    使用当前稳定版本(7.1)如果你刚开始学习PHP,请使用最新的稳定版本PHP7.1。PHP7.1非常新,相较于5.x版本增加了强大的新特性。PHP引擎大 ... [详细]
  • Linux重启网络命令实例及关机和重启示例教程
    本文介绍了Linux系统中重启网络命令的实例,以及使用不同方式关机和重启系统的示例教程。包括使用图形界面和控制台访问系统的方法,以及使用shutdown命令进行系统关机和重启的句法和用法。 ... [详细]
  • Commit1ced2a7433ea8937a1b260ea65d708f32ca7c95eintroduceda+Clonetraitboundtom ... [详细]
  • 本文讨论了在Windows 8上安装gvim中插件时出现的错误加载问题。作者将EasyMotion插件放在了正确的位置,但加载时却出现了错误。作者提供了下载链接和之前放置插件的位置,并列出了出现的错误信息。 ... [详细]
  • 本文介绍了一个在线急等问题解决方法,即如何统计数据库中某个字段下的所有数据,并将结果显示在文本框里。作者提到了自己是一个菜鸟,希望能够得到帮助。作者使用的是ACCESS数据库,并且给出了一个例子,希望得到的结果是560。作者还提到自己已经尝试了使用"select sum(字段2) from 表名"的语句,得到的结果是650,但不知道如何得到560。希望能够得到解决方案。 ... [详细]
  • 本文介绍了三种方法来实现在Win7系统中显示桌面的快捷方式,包括使用任务栏快速启动栏、运行命令和自己创建快捷方式的方法。具体操作步骤详细说明,并提供了保存图标的路径,方便以后使用。 ... [详细]
  • Go Cobra命令行工具入门教程
    本文介绍了Go语言实现的命令行工具Cobra的基本概念、安装方法和入门实践。Cobra被广泛应用于各种项目中,如Kubernetes、Hugo和Github CLI等。通过使用Cobra,我们可以快速创建命令行工具,适用于写测试脚本和各种服务的Admin CLI。文章还通过一个简单的demo演示了Cobra的使用方法。 ... [详细]
  • 本文详细介绍了git常用命令及其操作方法,包括查看、添加、提交、删除、找回等操作,以及如何重置修改文件、抛弃工作区修改、将工作文件提交到本地暂存区、从版本库中删除文件等。同时还介绍了如何从暂存区恢复到工作文件、恢复最近一次提交过的状态,以及如何合并多个操作等。 ... [详细]
  • Gitlab接入公司内部单点登录的安装和配置教程
    本文介绍了如何将公司内部的Gitlab系统接入单点登录服务,并提供了安装和配置的详细教程。通过使用oauth2协议,将原有的各子系统的独立登录统一迁移至单点登录。文章包括Gitlab的安装环境、版本号、编辑配置文件的步骤,并解决了在迁移过程中可能遇到的问题。 ... [详细]
  • 本文介绍了在go语言中利用(*interface{})(nil)传递参数类型的原理及应用。通过分析Martini框架中的injector类型的声明,解释了values映射表的作用以及parent Injector的含义。同时,讨论了该技术在实际开发中的应用场景。 ... [详细]
  • 使用C++编写程序实现增加或删除桌面的右键列表项
    本文介绍了使用C++编写程序实现增加或删除桌面的右键列表项的方法。首先通过操作注册表来实现增加或删除右键列表项的目的,然后使用管理注册表的函数来编写程序。文章详细介绍了使用的五种函数:RegCreateKey、RegSetValueEx、RegOpenKeyEx、RegDeleteKey和RegCloseKey,并给出了增加一项的函数写法。通过本文的方法,可以方便地自定义桌面的右键列表项。 ... [详细]
  • 近来公司前后端星散,前端自力供应页面和静态效劳很天然的就想到了用nginx去做静态效劳器。同时因为跨域了,就想应用nginx的反向代办去处置惩罚一下跨域,但是在解决题目的同时,发明 ... [详细]
  • tcp/ip参考模型_TCP / IP参考模型
    tcpip参考模型TCPIPmeansTransmissionControlProtocolandInternetProtocol.Itisthenetworkmodelusedi ... [详细]
author-avatar
Turkey小白
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有