vendredi 3 juillet 2015

Lazy load MirrorType

Let's say I have something like this

struct A {
    lazy var b: String = { return "Hello" }()
}

If I try to reflect struct A and access the value for b through its MirrorType like so:

var a = A()
var r = reflect(a)

for i in 0..r.count {
    let (n, m) = r[i]
    println("\(m.value)")
    var c = a.b
    println("\(m.value)")
}

I get nil in the console both times. Note that the underlying value type is Swift.Optional<Swift.String>, and the variable name is somewhat confusingly b.storage. Is there a way to access the underlying value of a lazy-loaded variable using reflection or initialize it from its MirrorType or am I stuck waiting for someone to write a first-class reflection api for Swift?





Aucun commentaire:

Enregistrer un commentaire