4 ms·
What would be a concrete use case which benefits from this? I am not experienced with D, but it just seems like it would make code more obscure
by skohan 6y ago
What would be a concrete use case which benefits from this? I am not experienced with D, but it just seems like it would make code more obscure
- mumblemumble 6y agoThere's a bit more explanation on the D wiki: https://wiki.dlang.org/Voldemort_types https://wiki.dlang.org/Voldemort_types I don't really intend to say whether they are better or worse than other ways of accomplishing similar things. Just that they're different.
- klodolph 6y agoYes, from that explanation it sounds like they are equivalent to Rust’s impl return types. Note that interfaces in Rust are not types, they do not name types. A value cannot have interface type. What happens when you return an “impl” type is that you return some unspecified type, but that type must implement the specified interface. You could translate the D example to: trait HasGetValue { fn get_value(&self) -> i32; } fn create_voldemort_type(value: i32) -> impl HasGetValue { ... } The “create_voldemort_type” function simply returns a value of unspecified type. As far as I can tell, this is equivalent to the D code, except it doesn’t use type inference for the function type.
- moonchild 6y agoNot really. Part of the point of voldemort types is that no information about the type is 'leaked' outside the function. In this case, the trait 'HasGetValue' is leaked and can be used by other code.
- skohan 6y agoWhen would you want to have an interface such that nothing about the return type of a function is known to the outside world? I'm genuinely asking; I just don't understand the utility of this concept.
- mumblemumble 6y agoI don't think anyone's trying to argue about whether it's better or worse than the Rust concept. Just that it's subtly different.
- skohan 6y agoI'm not interested in comparing it to the rust concept. I'm just curious why this is something people find valuable in D, and why another commenter would call it a feature D "would be ruined without"
- bobthebuilders 6y agoThe commentor is just mistaken. The two do the exact same thing.
- skohan 6y agoThat's fine, but I'm not interested in comparing them and I still don't understand what the benefit is