Hvad vil 'typecasting' sige? Hvad gør man når man 'typecaster' - og hvor og hvorfor?
Jeg spør som redaktør på Politikens Ordbøger - vi overvejer ordet 'typecaste' i en kommende udgave af Politikens Store Fremmedordbog.
Hvad vil 'typecasting' sige? Hvad gør man når man 'typecaster' - og hvor og hvorfor?
Jeg spør som redaktør på Politikens Ordbøger - vi overvejer ordet 'typecaste' i en kommende udgave af Politikens Store Fremmedordbog.
10 kommentarer
Du kan da bare slå det op? http://en.wikipedia.org/wiki/Typecasting_(programming)
Hej Jan.
Velkommen til FlashForum.dk.
Først er fremmest er det nok vigtigt at vi sikre os at vi taler samme lingo. Typecasting er jo et begreb der både bruges i Computer Science og i f eks. filmbranchen.
I CS er typecast i danske vendinger "når én datatype ændres til en anden".
Hvis du har en golf bold, og en basket bold, og omtaler begge som "bold", har du lavet et typecast fra en specialiseret udgave (datatype) af bold (golf og basket er en specialisering, da de har specielle egenskaber som ikke er fælles den generelle bold) til et mere generelt/abstrakt niveau. Det er et eksempel på typecast i CS.
Cheers
Asger
var myNumber:Number = 40.4
var myInt:int = int(myNumber) <- typecasting
// myInt = 40
Har jeg gjort, men den artikel beskriver det efter min mening ikke så menigmand forstår begrebet. Derfor spørger jeg andre.
Om nogen, så er Flashger manden, der kan forklare de tekniske termer.
Hej Asger
Det er selvfølgelig CS-brugen jeg er interesseret i. Den anden har jeg styr på.
Kan man definere 'typecaste' således:
"(i programmering) ændre en type data fra en del af en programmeringsproces til en anden type data for at kunne bruge samme data i en anden del af processen"
Venligst, Jan
Flashger > Type casting dækker vel også over at "betragte" en type som en anden? Du ændrer ikke nødvendigvis typen, du beder bare compileren om at betragte den som værende af en given type. I dit eksempel upcaster du bold, men din golfbold er stadig en golfbold, du beder bare compileren om at betragte den som en bold (fordi f.eks "hop" er en generel egenskab ved en bold, men implementeres forskelligt i en golfbold og en basket bold). Altså typen er den samme.
I thonbos eksempel ændres typen, dvs der returneres en ændring af data'en (den er blevet afrundet). Men de er begge eksempler på casting.
@mat: Du har helt ret i at det kan diskuteres hvad "ændring" dækker over. Som du selv nævner så i mit eksempel dækker ændring over en ændring i opfattelsen af data typen, hvor i Thombo's eksempel dækker ændring over en data konversion. Måske kan man tale om et definitivt typecast? hvor der i optræder tab af data, i den forstand at et typecast er irreversibelt i forhold til den oprindelige tilstand: number -> int -> number ~ 40.4 -> 40 -> 40.0.
Det er jo en spændende diskussion som tendere til et stadie af pseudo-filosofi, man kan argumentere at systemets opfattelse af objekterne er den absolutte sandhed, derfor kan det argumenteres at en datatype er systemets opfattelse af et given objekt. I så fald, sker der en ændring af datatypen ved typecast, da det er systemets opfattelse der definere objektet. Hvis systemets opfattelse ikke er den endegyldige sandhed om et objekt, men det derimod er objekterne og os som udviklere der definere deres sandhed, så er det en anden kontekst og et typecast definere kun ét givent systems opfattelse af et objekt. Så sandheden for om en datatype ændre sig ved polomorfisme må være afgjort i den kontekst objekterne og systemet diskuteres og betragtes.
Jeg tror mit forslag til definition af typecast er noget ala dette (uden at skulle gå nærmere ind i det):
typecast (i programmering) ændre et systems opfattelse af en given data entitet, til en anden, som muliggør anvendelse af samme data entitet i en anden sammenhæng.
Cheers
Asger
Flashger >
Men systemets opfattelse af en datatype er jo ikke en endegyldig sandhed hvis systemet kan blive bedt om at betragte objektet som forskellige typer på forskellige tidspunkter, f.eks
var golfbold:Bold = new GolfBold();
golfbold.tril();
GolfBold(golfbold).rubberbandElasticity = .6;
I ovenstående instancieres golfbolden som en generel bold, men i den nederste linie sætter vi en egenskab som kun en golfbold har (og skal downcaste den). Objektet har ikke ændret karakter, compileren får bare en instruks om at, vi udemærket ved hvad det er for en type, og den skal bare gøre som vi siger.
Så hvis systemets opfattelse af en datatype er den absolutte sandhed, så er det kun til tiden t (og så er sandheden vel ikke absolut)?
- jeg ved slet ikke om det er det du siger, jeg er herre-ringe til filosofi 
Og så skal det jo selvfølgelig påpeges at det kun er primitiver der kan konvertere data typer ved casting.
Dette er grunden til jeg køber Gyldendal. Hvis redaktøren ikke engang kan stave til "spørger" så virker det ikke særligt troværdigt..