是否有 C# 的 'nameof()' 语句的 Swift 等价物?



在Swift中,你可以很容易地获得一个枚举的案例名的字符串表示,像这样…

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的等价物?

在Foo中可以这样使用反射:

let mirror = Mirror(reflecting: self)
let laa1String = mirror[0].0
let laa2String = mirror[1].0

否则,当持有Foo的实例时,您可以这样使用它:

let fooInstance = Foo()
let mirror = Mirror(reflecting: fooInstance)
let laa1String = mirror[0].0
let laa2String = mirror[1].0

相关内容

  • 没有找到相关文章

最新更新