【发布时间】:2020-06-18 15:38:34
【问题描述】:
在 Swift 中,方法是一种特殊类型的函数,它附加到一个对象上。
如果给我一个任意函数,我想知道它是否是一个方法。如果是,我想知道它附加到的对象。
类似这样的:
func ownerOfFunction(_ f: () -> Void) -> Any? {
return isMethod(f) ? getObject(f) : nil
}
是否存在 isMethod() 或 getObject() 之类的东西?
【问题讨论】:
-
您能解释一下您这样做的目标是什么吗?这是一个有趣的问题。之所以使用泛型函数,是因为具体的类型并不重要。因此,试图查找有关特定类型的信息似乎是一种代码异味,因为它首先打破了使用非特定函数的理由。不过……这是一个有趣的问题。 ??????
-
谢谢!如果我能做到这一点,我认为我可以使用更简洁、更好 autoclosured
fn(self.method)而不是fn(self, selector: #selector(method)。对于NotificationCenter的扩展。此外,这很有趣。 ;) -
这里提出的问题与您的要求很接近,除了确定它是否是一种方法:stackoverflow.com/questions/28954361/…。有些答案可能会有所帮助。
-
@Wattholm 这个问题是问什么调用函数(解析调用堆栈可能是答案)。我问的是什么对象,如果有的话,拥有一个函数(从而使它成为一个方法)。
标签: swift functional-programming