У меня есть функция, которая содержит #function
и #line
, которая возвращает строку:
func exportMessage(content: String) -> String {
if let fileURL = URL(string: #file) {
return "\(fileURL.lastPathComponent): \(#function) - Line: \(#line)\n\(content)"
}
return "\(#function) - Line: \(#line)\n\(content)"
}
При попытке использовать exportMessage
над функцией в другой функции:
func doSomething() {
let result = exportMessage(content: "instance is nil")
print(result)
}
Вывод:
MyPlayground.playground: exportMessage (content :) - Строка: 5
Экземпляр равен nil
Содержит «exportMessage»"но не " doSomething "в качестве имени функции (#function
).Это то же самое для номера строки, это номер строки в exportMessage()
, но , а не в doSomething()
.
Я ожидаю получить имя функции и номер строки для doSomething()
, as:
MyPlayground.playground: doSomething () - Строка: 12
экземпляр равен nil
Так как я собираюсь использовать exportMessage
во многих функциях я бы предположил, что это должно относиться к функции вызывающей стороны.Это достижимо?Как?