Есть ли способ получить время компиляции переменной в Swift 2? Я имею в виду первое имя переменной, которое ссылается на экземпляр нового класса, если таковой имеется.Swift: получить имя времени компиляции переменной (ссылаясь на класс)
Вот простой пример:
public class Parameter : FloatLiteralConvertible {
var name:String?
var value:Double
// init from float literal
public required init (floatLiteral value: FloatLiteralType) {
self.value = Double(value)
self.name = getLiteralName()
}
func getLiteralName() -> String {
var literalName:String = ""
// do some magic to return the name
return literalName
}
}
let x:Parameter = 2.0
print(x.value) // this returns "2.0"
print(x.name!) // I want this to return "x"
Я уже проверил аналогичные вопросы по этой теме обработки зеркального отображения или Objective-C отражений. Но во всех этих случаях можно получить только имена свойств в классе - в примере выше name
и value
.
Тот же вопрос был задан в 2014 году - Swift: Get Variable Actual Name as String - и я надеюсь, что с тех пор существует решение в быстром 2.
Благодарим вас за внимание. Практическое применение в моем случае было бы сделать математическую структуру более удобной для пользователя, когда пользователь объявит переменные. Мне нужно сохранить имена переменных, и было бы неплохо, если бы я мог получить литерал исходного кода как имя по умолчанию. Конечно, запись 'let x = Parameter (« x », 2)' всегда является опцией, но не настолько элегантной. – dundee
@dundee Проблема заключается в том, что после того, как вы напишете 'let y = x', ваша идея ломается. А как насчет возврата параметра из функции? Тогда переменная не указана ... – Sulthan