2016-01-24 59 views
2

我期待在swift中获得函数的名称。在Swift中获取函数名称

我基本上要像

__FUNCTION__ 

但是从不同的功能例如

func do() { 
    code etc 
} 

func doStuff() { 
    var funcName = do().name 
} 

以上将是完美的。

任何想法?

+0

能否请你解释如何使用呢?你为什么需要这个? – Sulthan

回答

1

不是最干净的,但它的工作原理。

func dost() -> (name: String,String) { 
    return (__FUNCTION__,"") 
} 

func doStuff() { 
    var funcName = dost().name 
} 

你可能只是返回没有元组的函数名。

+0

我到类似的东西 'FUNC dostuff(的getName:布尔) - >字符串{如果(的getName)返回__FUNCTION__ }' 但我想知道是否有更好的东西也许 – RyanCosans

+0

是的,这工作也是如此。 – InSearchOf

+2

注意:在Swift 3中它已被#function替换。 –

1

在Swift 3中,正确的关键字是#function。您可以将指针传递给用于存储函数名称的字符串对象。例如:

func myFunction(param1:Any, param2:Any, functionName: UnsafeMutablePointer<String>?) -> Any { 
    if functionName != nil { 
     functionName.pointee = #function 
    } 
    ... 
} 

用法:

var name:String 
// You can always pass nil if you are not interested in retrieving the 
// function name 
let result = myFunction(1, 2, functionName: &name) 
print(name)