В Swift вы можете легко получить строковое представление имени случае перечисления, как и так ...Есть ли бычный эквивалент выражения C# 'nameof()'?
enum Foo
{
case laa1
case laa2
case laa3
}
let varHoldingTheStringLaa1 = String(Foo.laa1) // Returns the string 'laa1'
Однако, я не могу понять, как сделать то же самое для члена класса, как так. ..
class Foo
{
var laa1:String = ""
var laa2:String = ""
var laa3:String = ""
}
// None of these work...
let varHoldingTheStringLaa1 = String(laa1) // Returns the value stored in laa1, not 'laa1'
let varHoldingTheStringLaa1 = String(Foo.laa1) // Won't even compile
В C#, это легко, благодаря nameof
. Вы просто передаете члену, которому хотите получить строковое представление, подобное этому ...
let varHoldingTheStringLaa1 = nameof(laa1) // Returns the string 'laa1'
Итак, есть ли эквивалент Swift?
Если вы уже знаете имя свойства , почему бы просто не назначить литерал, например: 'let varHoldingTheStringLaa1 =" laa1 "' –
Отражающие способности Swift являются незавершенными, и из того, что я прочитал, даже не ясно, какова конечная точка этого прогресса. Если вас это интересует, недавняя дискуссия, прошедшая весной, в списке быстрой эволюции. В настоящее время, однако, нет операции, сравнимой с 'nameof()'. –
Codedifferent, это потому, что я стараюсь избегать строк hard.coding. Мне нужна поддержка рефакторинга. Надеюсь, Swift добавит это, поскольку это очень полезно в C#, особенно с отражающими sdks. – MarqueIV