【发布时间】:2020-04-17 17:24:27
【问题描述】:
在 Swift 中是否有类似的方法可以像在 Go 中一样将空接口作为参数传递?
【问题讨论】:
-
你想达到什么目的?
-
答案是
Any,但你几乎肯定不想要这个。interface{}解决了在 Swift 中以完全不同的方式解决的问题。 -
@NoemiPecorari 这可能不是你想在 Swift 中做的事情。您必须将
Any值转换为函数类型,并且您很难知道将其转换为什么。你想用这个功能实现什么? -
@NoemiPecorari 你需要重新设计。即使在 Go 中,我也不认为这是正确的设计。您希望对“字面上的任何功能”做什么?如果不首先知道它的形状,你就无法调用它或从中获得结果。如果你知道它的形状,你就不需要这个功能。我建议列出你试图用这个设计解决的更深层次的问题。 (是不是你有一个你想要接受的函数签名列表,而不是任何函数签名?)如果你需要
ascast 或reflect来使用它,你可能走错路了。 -
(Go 经常使用
interface{}和reflect来绕过它没有泛型的事实。Swift 有泛型,因此通常不需要这些工具。)