How much interest is there in adding sub-structs to Swift? I think this could solve one of the problems I've been thinking about.
The idea is that struct inheritance is the opposite of classes: sub-structures have fewer properties than their parent structures, and therefore the memory requirements of sub-structures are less than or equal to their parent. @Joe_Groff mentioned the idea here.
In my specific use case I'm thinking of the
Complex number types, which you can imagine has properties
imag. The idea is then that
Real is a sub-structure, where its
imag property is always zero.
So now, any function that takes
Complex as an argument (like addition), can also handle
Real structs as arguments. The advantages could be two-fold,
- first, a custom override of, e.g., addition for two
Realtypes wouldn't need to add the two (zero) imaginary properties (saving FLOPs), and
- second, in some cases the compiler might be able to avoid actually allocating that unnecessary memory for the imaginary property if it's never used.
The big problem this solves, that I can't find another work around for, is that one can then write any function that takes two
Complex types (or sub-types), performs a bunch of binary operations (addition, multiplication, etc), and returns another
Complex type (or sub-type).
Are there other use cases where this would be useful?