这是一个场景
func callingMethod_A {
self.someCalculation()
}
func callingMethod_B{
self.someCalculation()
}
func someCalculation{
//how to find who called this method? is it callingMethod_A or _B at runtime?
//bla bla
}
我们如何获得在运行时调用它的方法名称。
谢谢你。
我想出了一种方法来做到这一点,无论如何,对于 Swift 代码:
定义一个String
参数callingFunction
并给它一个默认值#function
。不要从调用者传递任何东西,编译器会提供调用函数名称。
基于@Anu.Krthik 的回答:
func someCalculation (parameter: String, callingMethod: String = #function ) {
print("In `\(#function)`, called by `\(callingMethod)`")
}
func foo(string: String) {
someCalculation(parameter: string)
}
foo(string: "bar")
以上印
In `someCalculation(parameter:callingMethod:)`, called by `foo(string:)`
但是,请注意,如果调用方为callingFunction
参数提供值,则此技术可能会被破坏。如果你用以下方式调用它:
func foo(string: String) {
someCalculation(parameter: string, callingMethod: "bogusFunctionName()")
}
你得到输出
In `someCalculation(parameter:callingMethod:)`, called by `bogusFunctionName()`
反而。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句