<html><head><meta http-equiv="Content-Type" content="text/html charset=utf-8"></head><body style="word-wrap: break-word; -webkit-nbsp-mode: space; -webkit-line-break: after-white-space;" class=""><span style="font-family: Alegreya-Regular;" class="">I’m pretty sure one of the reasons is because inheritance implies </span><i class="" style="font-family: Alegreya-Regular;">method</i><span style="font-family: Alegreya-Regular;" class=""> inheritance, which implies being able to override methods, and that opens a big can of worms which will be familiar to any experienced C++ programmers.</span><div class="" style="font-family: Alegreya-Regular;"><br class=""></div><div class="" style="font-family: Alegreya-Regular;">Swift struct methods aren’t dynamically dispatched; they’re just function calls. But if you could subclass a struct and override methods, then the methods would need to be dynamically dispatched … but that implies that structs would need to contain vtables (or isa pointers), which makes them a lot more heavyweight. Or on the other hand, if struct methods stayed statically dispatched, then overriding them would be fraught with peril, for the same reason that overriding nonvirtual methods in C++ is generally a very bad idea.</div><div class="" style="font-family: Alegreya-Regular;"><br class=""></div><div class="" style="font-family: Alegreya-Regular;">—Jens</div></body></html>