如何在swift中从被调用的方法中识别调用方法

帕万·库马尔

这是一个场景

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] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

如何在Swift中调用Objective C类方法

来自分类Dev

如何在Swift中调用协议提供的静态方法

来自分类Dev

如何在Swift中调用Objective-C类别方法

来自分类Dev

如何在Swift中调用Objective-C instancetype方法?

来自分类Dev

如何在Swift中调用Objective-C类别方法

来自分类Dev

如何在Swift中调用Objective-C instancetype方法?

来自分类Dev

如何在方法中调用闭包

来自分类Dev

jQuery如何在原型中调用方法?

来自分类Dev

如何在ElapsedEventHandler中调用异步方法

来自分类Dev

如何在构建器中调用方法

来自分类Dev

如何在JSTL中调用Java方法?

来自分类Dev

如何在LINQ Select中调用方法

来自分类Dev

如何在iOS中调用Javascript方法?

来自分类Dev

如何在Ruby中模拟方法调用

来自分类Dev

如何在Squeak中调用方法?

来自分类Dev

如何在python中动态调用方法?

来自分类Dev

如何在JavaScript中调用Java方法

来自分类Dev

如何在Java中“自动调用”方法

来自分类Dev

如何在python中调用类的方法?

来自分类Dev

如何在构造函数中调用方法?

来自分类Dev

如何在python中调用类方法

来自分类Dev

如何在方法中调用线程

来自分类Dev

如何在活动中调用片段方法

来自分类Dev

如何在返回的类中调用方法

来自分类Dev

如何在 Func() 中调用类方法

来自分类Dev

如何在laravel中调用方法

来自分类Dev

如何在 .subscribe 中调用方法?

来自分类Dev

如何在类方法调用内联中嵌套函数调用

来自分类Dev

在主方法中调用一个方法时如何在方法中调用方法