Når man læser om datatyper, bruges “type definition” ofte uden nogen forudgående forklaring på, hvad det betyder.
For eksempel i https://en.wikipedia.org/wiki/Type_system har vi sætningen “… da C ++ har stærkere regler vedrørende typedefinitioner …”
Enhver hjælp til at præcisere, hvad forskellen mellem f.eks. type og type definition er meget værdsat!
Kommentarer
- Ved du hvad en type er? Derefter er en type definition , som udtrykket antyder, definitionen af en type. Jeg ' er ikke sikker på, hvad dit rigtige spørgsmål er her.
Svar
“Definition” af en type er handlingen med at opbygge en ny type sammensat af en eller flere allerede eksisterende datatyper. For eksempel erklæres typen “Complex Number” ofte som et ordnet par af “Real Numbers”:
Type Complex Real a Real b End
a og b er de reelle og imaginære dele .
Denne prøve af pseudokode er en “Type Definition”.
Kommentarer
- Jeg don ' t tror, det er, hvad ' bliver spurgt … Definition af en abstrakt datatype er selvfølgelig en type definition, men har intet at gøre med stærk eller svag skrivning (del af spørgsmålet)
Svar
Fra “C ++ programmeringssprog” -af Bjarne Stroustrup skaberen af C ++.
En type definerer et sæt mulige værdier og et sæt operationer (for et objekt).
Også følgende definitioner er indbyrdes forbundne med typen hentet fra samme bog
En erklæring er en erklæring der introducerer et navn i programmet. Det specificerer en type for den navngivne enhed
Et objekt er en hukommelse, der indeholder en værdi af en eller anden type.
En værdi er et sæt bits fortolket efter en type.
En variabel er et navngivet objekt
Kommentarer
- Dette betyder ikke ' t nævner typedefinition .
Svar
Variabler kan indeholde forskellige slags værdier, fx heltal, reals, tegn … Dette kaldes variabens TYPE. Nogle sprog er dynamisk skrevet. Det betyder, at tolken eller kompilatoren bestemmer typen af variablen for dig. På statiske typede sprog skal du selv definere typen, når du erklærer variablen. Dette er TYPE DEFINITION.
På stærke typiske statiske sprog forbyder reglerne at blande forskellige typer. hvis du vil tilføje f.eks. et ægte og et heltal, skal du eksplicit kaste heltalet til ægte.
på et svagt skrevet sprog kan du blande typer. men da bitmønstre på lavt niveau adskiller sig mellem typer, kan du få uønskede resultater.
De fleste sprog er et sted imellem. Det vil være klart, at uønskede effekter ikke er acceptable, mens behovet for en eksplicit rollebesætning gør koden tung. Så de fleste compilere vil gøre en implicit rollebesætning for nogle standardoperationer. Tilføjelse af et rigtigt og et heltal vil i så fald implicit provokere en rollebesætning til reel.
Kommentarer
- Hvad er " pe " ? Jeg kan heller ikke se ' hvordan det, du ' har skrevet efter første afsnit, vedrører spørgsmålet.
- @ David: pe = eksempli gratia = Af hensyn til eksemplet = for eksempel … Sætningen " … da C ++ har stærkere regler vedrørende typedefinitioner … " viser efter min mening, at spørgsmålet stilles i sammenhæng med svag og stærk skrivning.
- Aha – at ' s " f.eks. ", på engelsk – redigeret.
- faktisk er det. min fejl.
- Dette svar viser en række alvorlige misforståelser af typer og typesystemer. Næsten hver sætning i dette svar er forkert, forvirrende eller vildledende. Som en start handler typesystemer ikke kun om variabler:
3+'a'
betyder ikke ' t involverer nogen variabler, men vil blive typekontrolleret. Dynamisk " indtastet " sprogimplementeringer don ' t " beslutter " typen af noget. Implicitte konverteringer gør ' t til at gøre et sprog mere " dynamisk " eller " svagt " skrevet.Generelt er statisk og dynamisk " indtastning " ikke modsatte ender af et spektrum, men taler simpelthen helt om forskellige ting.