Varför uppräkningar inte är utbyggbara: Versionshistorik

Hoppa till navigering Hoppa till sök

Val av diff: markera i radioknappen för att jämföra sidversioner och tryck enter eller knappen längst ner.
Förklaring: (nuvarande) = skillnad mot senaste sidversion; (föregående) = skillnad mot föregående sidversion; m = mindre ändring.

20 augusti 2024

  • nuvarandeföregående 08.0420 augusti 2024 kl. 08.04Admin diskussion bidrag 1 777 byte +1 777 Skapade sidan med '== Varför enums inte kan utökas == Klasser har kontrakt på sina metoder: <pre> class A {} class B extends A {} function foo(A $a) {} function bar(B $b) { foo($b); } </pre> Denna kod är typ-säker, eftersom B följer kontraktet för A, och genom co/contra-variansens magi kommer alla förväntningar man kan ha på metoderna att bevaras, med undantag för undantag. Enums har kontrakt på sina cases, inte metoder: <pre> enum ErrorCode { case SOMETHING_BROK...'