热门标签 | 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!

问题解决了!


推荐阅读
  • 在 Swift 编程中,遇到错误提示“一元运算符 '!' 不能应用于 '()' 类型的操作数”,通常是因为尝试对没有返回值的方法或函数应用逻辑非运算符。本文将详细解释该错误的原因,并提供解决方案。 ... [详细]
  • 本文将介绍如何编写一些有趣的VBScript脚本,这些脚本可以在朋友之间进行无害的恶作剧。通过简单的代码示例,帮助您了解VBScript的基本语法和功能。 ... [详细]
  • Explore a common issue encountered when implementing an OAuth 1.0a API, specifically the inability to encode null objects and how to resolve it. ... [详细]
  • 本文详细介绍了Java中org.eclipse.ui.forms.widgets.ExpandableComposite类的addExpansionListener()方法,并提供了多个实际代码示例,帮助开发者更好地理解和使用该方法。这些示例来源于多个知名开源项目,具有很高的参考价值。 ... [详细]
  • 本文详细探讨了JDBC(Java数据库连接)的内部机制,重点分析其作为服务提供者接口(SPI)框架的应用。通过类图和代码示例,展示了JDBC如何注册驱动程序、建立数据库连接以及执行SQL查询的过程。 ... [详细]
  • 解决JAX-WS动态客户端工厂弃用问题并迁移到XFire
    在处理Java项目中的JAR包冲突时,我们遇到了JaxWsDynamicClientFactory被弃用的问题,并成功将其迁移到org.codehaus.xfire.client。本文详细介绍了这一过程及解决方案。 ... [详细]
  • 使用GDI的一些AIP函数我们可以轻易的绘制出简 ... [详细]
  • 深入了解 Windows 窗体中的 SplitContainer 控件
    SplitContainer 控件是 Windows 窗体中的一种复合控件,由两个可调整大小的面板和一个可移动的拆分条组成。本文将详细介绍其功能、属性以及如何通过编程方式创建复杂的用户界面。 ... [详细]
  • dotnet 通过 Elmish.WPF 使用 F# 编写 WPF 应用
    本文来安利大家一个有趣而且强大的库,通过F#和C#混合编程编写WPF应用,可以在WPF中使用到F#强大的数据处理能力在GitHub上完全开源Elmis ... [详细]
  • 深入解析Spring启动过程
    本文详细介绍了Spring框架的启动流程,帮助开发者理解其内部机制。通过具体示例和代码片段,解释了Bean定义、工厂类、读取器以及条件评估等关键概念,使读者能够更全面地掌握Spring的初始化过程。 ... [详细]
  • 在尝试使用C# Windows Forms客户端通过SignalR连接到ASP.NET服务器时,遇到了内部服务器错误(500)。本文将详细探讨问题的原因及解决方案。 ... [详细]
  • 本文深入探讨了Linux MMC框架中的Host对象,详细介绍了其核心数据结构和API,旨在为理解和开发MMC设备驱动提供指导。 ... [详细]
  • 实现‘点击恢复’功能 - Tap-to-Resume Feature in SpriteKit
    了解如何在应用程序从非活动状态返回时,在SpriteKit游戏中添加一个‘点击恢复’的文字提示。 ... [详细]
  • 这个报错出现在userDao里面,sessionfactory没有注入。解决办法:spring整合Hibernate使用test测试时要把spring.xml和spring-hib ... [详细]
  • 在现代移动应用开发中,尤其是iOS应用,处理来自服务器的JSON数据是一项基本技能。无论是使用Swift还是PHP,有效地解析和利用JSON数据对于提升用户体验至关重要。本文将探讨如何在Swift中优雅地处理JSON,以及PHP中处理JSON的一些技巧。 ... [详细]
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社区 版权所有