Swift 中带有可变参数的“some”关键字

问题描述 投票:0回答:1
protocol myProtocol {}

func doSomething(with params: (some myProtocol)...) {
    // Implementation goes here
}

extension Int: myProtocol {}

doSomething(with: 1, 2, 3)

func 声明行出现编译错误:

“某些”类型仅允许在属性、下标和函数中

我可以简单地完全省略关键字,但默认情况下它被认为是“any”。因此,我无法将参数传递给需要

[some SyntaxProtocol]
作为参数的函数。

swift swift-protocols variadic function-parameter
1个回答
0
投票

使用泛型可以获得与

some
相同的结果,并且只允许一种符合协议的特定类型

func doSomething<ProtocolType: myProtocol>(with params: (ProtocolType)...) {
    // Implementation goes here
}
© www.soinside.com 2019 - 2024. All rights reserved.