2016-01-24 3 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: Bool) -> Строка {если (GetName) возвращают __FUNCTION__ }' , но мне было интересно, если есть что-то лучше, может быть – RyanCosans

+0

Да, это работает, как хорошо. – InSearchOf

+2

Примечание: в Swift 3 он заменен на #function. –

1

В Swift 3 ключевое слово справа #function. Вы можете передать указатель на объект String, который используется для хранения имени функции. Например:

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) 
Смежные вопросы