草庐IT

ExpressibleByArrayLiteral

全部标签

swift - 满足 ExpressibleByArrayLiteral 协议(protocol)

为什么当我在swift中扩展ExpressibleByArrayLiteral协议(protocol)时,我需要使init成为必需的。在协议(protocol)的定义中,init方法只是公开的。我和文档中的内容差不多,https://developer.apple.com/reference/swift/expressiblebyarrayliteral,而且编译器仍然提示使这个init(arrayLiteral:Element...)成为必需的。我唯一的区别是我在一个没有结构的类中实现它。有什么建议吗?更新:这是我的代码的实现:publicclassStack{privatevarb

swift - "ExpressibleByArrayLiteral"可以通用吗?

在Swift中,假设我有一个名为p的SCNVector3变量,我希望能够通过以下代码设置p:p=[a,b,c]无论[a,b,c]是[Float]还是[CGFloat]。我该怎么做? 最佳答案 你不能让它成为通用的,因为你确实需要Float值来初始化SCNVector3,但你可以将许多类型与protocol.在这里,我制作了SCNVector3ExpressibleByArrayLiteral,其中的数组元素符合protocolConvertibleToFloat。该协议(protocol)处理将值转换为Float的能力。我已经为Fl