Can you get typeof(this) in a mixin template - trying to mimic a Kotlin feature here.

aliak something at something.com
Tue Aug 28 20:39:16 UTC 2018


Hi,

I'm trying to do something similar to what Kotlin allows with 
assigning to member variables from a map. The syntax is very 
readable and looks like:

class User(val map: Map<String, Any?>) {
     val name: String by map
     val age: Int     by map
}

So I'm trying to do something similar in D:

mixin template MapMembers(alias aa) {
   foreach (name; typeof(this).tupleof) {
     // if name is in aa, then mixin(m = aa[" ~ m ~ "]) ... ish
   }
}
struct User {
   this(Variant[string] aa) {
     mixin MapMembers!aa;
   }
}

Seems I can't do typeof(this) inside the mixin.

One workaround is to explicitly pass the type "User" to the 
template mixin, but it feels like this is something that should 
work and I'm just unfamiliar with template mixins and their usage.

Cheers,
- Ali

[0] 
https://kotlinlang.org/docs/reference/delegated-properties.html#storing-properties-in-a-map


More information about the Digitalmars-d-learn mailing list